Django ModelForm 布尔字段在 True 时不给出 None

Dar*_*ech 2 django django-forms

我有一个 models.py:

class MyModel(models.Model):
    ...
    fries_with_that = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

形式.py:

class MyModelForm(ModelForm):

    class Meta:
        model = MyModel
        fields = (
            'fries_with_that',
        )
Run Code Online (Sandbox Code Playgroud)

这工作正常,并为我提供了“未知”、“是”和“否”选项的下拉菜单。但我真的想要一个复选框。所以我补充道:

编辑

        def __init__(self, *args, **kwargs):
            super(MyModelForm, self).__init__(*args, **kwargs)

            self.fields['fries_with_that'].widget = forms.CheckboxInput()
Run Code Online (Sandbox Code Playgroud)

现在我得到一个复选框,但选中后,表单返回值None。为什么是这样?

编辑

视图.py:

form = MyModelForm(request.POST or None)
if form.is_valid():
    # UPDATE PROJECT
    updated = MyModel.objects.filter(
        project_id=project_id
    ).update(**form.cleaned_data)
    if updated == 0:
        project = form.save()
Run Code Online (Sandbox Code Playgroud)

kar*_*ikr 5

尝试这个:

class MyModelForm(ModelForm):

    fries_with_that = forms.BooleanField(widget=forms.CheckboxInput, default=False)

    class Meta:
        model = MyModel
        fields = (
            'fries_with_that',
        )
Run Code Online (Sandbox Code Playgroud)

实际上,这应该呈现复选框。

fries_with_that = forms.BooleanField() 
Run Code Online (Sandbox Code Playgroud)