在ModelForm中使用`SplitArrayField`而不是`SimpleArrayField`

问题描述:

我的模型使用ArrayField,我想使用ModelForm。 Django默认使用SimpleArrayField,但我需要SplitArrayField。我从json获取数据,并且仅使用表单进行验证,而不需要输入小部件。 (我用的客户端绘制)在ModelForm中使用`SplitArrayField`而不是`SimpleArrayField`

class Profile(models.Model): 
    phone = ArrayField(CharField(max_length=20, validators=[some_validator])) 

class ProfileForm(ModelForm): 
    class Meta: 
    model = Profile 

form = ProfileForm(data={"phone":["555-5555","444-4444"]}) 
form.validate() 

我怎么可以使用ModelFormSplitArrayField

+1

这是怎么回事postgres?.. –

+0

'从django.contrib.postgres.forms导入SimpleArrayField'数组字段是postgres特定的字段 – seyed

+0

可能这个标记虽然不相关。 http://*.com/tags/postgresql/info –

我觉得用纯django这是不可能的。有ticket建议使用SplitArrayField的可能性。

但你可以使用这个包:django_postgres_extensions。 在那里,你可以通过定义form_size参数使用SplitArrayField

from django_postgres_extensions.models.fields import ArrayField 

class Product(models.Model): 
    keywords = ArrayField(models.CharField(max_length=20), default=[], form_size=10, blank=True) 

我解决我的问题与field_classesMeta类:

class ProfileForm(ModelForm): 

    class Meta: 
     model = Profile 
     field_classes = { 
      'phone': SplitArrayField, # or any custom field 
     } 

SplitArrayField不够好对我而言,我创造了我自己的array form field