django many2many字段不需要

时间:2009-12-30 23:10:51

标签: django django-forms

我基于模型创建了一个表单。该模型有许多领域。我定义了这样的字段:

contacts = models.ManyToManyField(Contact, blank=True, null=True)

我现在想知道为什么生成的表单说明这个字段不能为空。当我没有为联系人字段选择联系人时,我总是收到错误消息“此字段是必需的。”。

什么是错的?

3 个答案:

答案 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条记录添加到此表中,这似乎无效。

通常,您将关闭这两个这些属性。