我有ArrayField
的模型,我想使用ModelForm
。 Django默认使用SimpleArrayField
,但我需要SplitArrayField
。我从json获取数据,我只使用表单进行验证,而且我不需要输入小部件。 (我使用客户端渲染)
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()
如何在SplitArrayField
中使用ModelForm
?
答案 0 :(得分:1)
我在field_classes
课程中使用Meta
解决了我的问题:
class ProfileForm(ModelForm):
class Meta:
model = Profile
field_classes = {
'phone': SplitArrayField, # or any custom field
}
注意强>:
SplitArrayField
对我来说不够好,所以我创建了自己的array form field
答案 1 :(得分:0)
我认为对于纯粹的django来说,目前这是不可能的。 ticket提出了使用SplitArrayField
的可能性。
但你可以使用这个包:django_postgres_extensions。
在那里,您可以通过定义SplitArrayField
参数来使用form_size
:
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)