【问题标题】:DJANGO: ManyToManyField blank select option missing in formDJANGO:表单中缺少 ManyToManyField 空白选择选项
【发布时间】:2012-04-20 10:41:15
【问题描述】:

我的视图中构造了以下表单

VIEW.PY

class MembershipForm(forms.ModelForm):
    project = forms.ModelChoiceField(Project, required=True)
    role = models.ManyToManyField(Role, blank=True)

模型.PY

class Membership(models.Model):
    project = models.ForeignKey(Project)
    role = models.ManyToManyField(Role, blank=True, null=True)

在我的模板中,角色没有“------”选项。我怎样才能将其作为一个选项并默认选择它?

【问题讨论】:

  • 另请注意,您在表单中使用了 models.FIELD,这是不正确的。您不能将 models.ManyToManyField 用作表单字段。它只是一个模型字段。

标签: python django forms widget many-to-many


【解决方案1】:

我不确定为什么缺少空白选项是视图,但要设置默认值,请使用 default field

class Membership
    role = models.ManyToManyField(Role, blank=True, null=True, default = "")

【讨论】:

    【解决方案2】:

    首先,您的 MembershipForm 看起来不正确。通过任一方式修复它

    class MembershipForm(forms.ModelForm):
        # Do you really need to override the form field for role?
        class Meta:
            model = Membership
    

    或者别的什么。

    其次,对于 ManyToManyField,不使用空标签 '--------',因为小部件可能表示未选择任何项目的状态,并且同时选择空标签和实际项目会令人困惑.

    【讨论】:

    • 如何创建一个小部件来表示未选择物品的状态?
    猜你喜欢
    • 2012-04-20
    • 2013-09-03
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多