我基于模型创建了一个表单。该模型有许多领域。我定义了这样的字段:
contacts = models.ManyToManyField(Contact, blank=True, null=True)
我现在想知道为什么生成的表单说明这个字段不能为空。当我没有为联系人字段选择联系人时,我总是收到错误消息“此字段是必需的。”。
什么是错的?
答案 0 :(得分:3)
在表单声明中,将此字段标记为required=False
class MyForm(forms.ModelForm):
contacts=forms.ModelMultipleChoiceField(queryset=Contact.objects.all(),required=False)
class Meta:
model=MyModel
答案 1 :(得分:1)
在添加syncdb
之前,您可能blank=True, null=True
了吗?
syncdb
只会在数据库中不存在的情况下创建表。必须使用SQL或使用South等迁移工具直接在数据库中手动完成对模型的更改。
当然,如果您仍处于早期开发阶段,则删除数据库并再次运行syncdb
会更容易。
答案 2 :(得分:0)
你使用null = True在这里令人困惑。 manyToMany字段导致第三个表将一个模型与另一个模型相关联。 e.g。
Business <-> Contact
如果business.contacts
为空,则不会在此表中输入任何记录。 null=True
会让我觉得您打算将NULL
条记录添加到此表中,这似乎无效。
通常,您将关闭这两个这些属性。