如何在Django ModelForm中删除"None"选项?

dev*_*eng 6 django django-models django-forms

例如,我有一个这样的模型:

class Item(models.Model):
    TYPE_CHOICES = (
        (1, _('type 1')),
        (2, _('type 2')),
    )
    type = models.PositiveSmallIntegerField(max_length=1, choices=TYPE_CHOICES)
Run Code Online (Sandbox Code Playgroud)

对于我有的形式:

class ItemModelForm(forms.ModelForm):
    class Meta:
        model = Item
        widget = {
            'type': forms.RadioSelect(),
        }
Run Code Online (Sandbox Code Playgroud)

我想要的是具有2个选项的无线电选择("类型1"和"类型2").但是,我将有3个选项,"---------","类型1"和"类型2".我认为"---------"代表"无",但模型中需要"类型"字段,为什么"无"选项仍然显示?

但是如果我使用Form代替:

class ItemForm(forms.Form):
    type = forms.ChoiceField(widget=forms.RadioSelect(), choices=Item.TYPE_CHOICES)
Run Code Online (Sandbox Code Playgroud)

我将只有2个选项,"类型1"和"类型2",这是正确的.

我想使用ModelForm而不是标准Form,但不知道如何删除"---------".有人能帮助我吗?谢谢.

更新:谢谢大家,刚刚发现它已在这里得到解答.

看起来我将不得不覆盖ModelForm 的字段方法.

Uku*_*kit 5

您应该能够设置empty_labelNone这一点.

type = forms.ChoiceField(widget=forms.RadioSelect(), choices=Item.TYPE_CHOICES, empty_label=None)
Run Code Online (Sandbox Code Playgroud)