2
For storing the array I would use a django-picklefield or a custom field like this:
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)
For validation you can use 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
And it’s also good to have some JavaScript code to validate input and make entering an int array easier on your client side.
Source:stackexchange.com