首页 > 解决方案 > Django ModelChoice 字段设置为 required=False 但在浏览器中仍然是必需的

问题描述


class One(forms.ModelForm):

    space = forms.ModelChoiceField(queryset=models.Space.objects.none(), required=False)

    mode_specific = False

    class Meta:
        model = OneModel
        id_fields = ["name", "description", "space"]

    def __init__(self, *args, **kwargs):
        super(One, self).__init__(*args, **kwargs)
        # this returns false
        print(self.fields["space"].required)

但是在模板上,仍然需要“空格”,我不确定是什么问题。

标签: djangodjango-formsdjango-templates

解决方案


请将以下代码粘贴到创建和编辑表单类的init方法中。试试这个并确认。

def __init__(self, *args, **kwargs): 
    super(One, self).__init__(*args, **kwargs)
    for field in self.fields.values():
        self.fields['space'].required = False

推荐阅读