2015-05-17 46 views
1

我想使用django格式來驗證字段是整型數組。達到此目的的最佳方法是什麼?我不想使用ChoiceField,我不確定最簡單的方法是什麼。有關這件事的任何建議?Django格式整數數組字段

回答

2

爲了存儲陣列我會用一個django-picklefield或自定義字段是這樣的:

from django.db import models 

class IntArrayField(models.TextField): 
    __metaclass__ = models.SubfieldBase 

    def __init__(self, *args, **kwargs): 
     super(IntArrayField, self).__init__(*args, **kwargs) 

    def to_python(self, value): 
     if not value: 
      return None 
     if isinstance(value, list): 
      return value 
     return [int(n) for n in value.split('|')] 

    def get_db_prep_value(self, value): 
     if not value: 
      return None 
     assert(isinstance(value, list) or isinstance(value, tuple)) 
     return '|'.join(str(value)) 

    def value_to_string(self, obj): 
     value = self._get_val_from_obj(obj) 
     return self.get_db_prep_value(value) 

進行驗證,您可以使用clean_fieldname()

def clean_fieldname(self): 
     data = self.cleaned_data['fieldname'] 
     # if <data is not an int array>: 
     # raise forms.ValidationError("You must enter an int array.") 

     return data 

而且,這也是件好事,一些JavaScript代碼驗證輸入並在客戶端更簡單地輸入一個int數組。