在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()
我怎么可以使用ModelForm
SplitArrayField
?
答
我觉得用纯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_classes
在Meta
类:
class ProfileForm(ModelForm):
class Meta:
model = Profile
field_classes = {
'phone': SplitArrayField, # or any custom field
}
注:
SplitArrayField
不够好对我而言,我创造了我自己的array form field
这是怎么回事postgres?.. –
'从django.contrib.postgres.forms导入SimpleArrayField'数组字段是postgres特定的字段 – seyed
可能这个标记虽然不相关。 http://*.com/tags/postgresql/info –