如果我包含一个默认的空白选项,如何制作一个需要选择的Django ModelForm字段?

时间:2014-02-28 06:22:58

标签: django django-forms

我的模型看起来像这样:

class Shoe(models.Model):
    size = models.IntegerField(choices=sizeChoices)
    brand = models.ForeignKey('Brand', related_name='shoes', choices=brandChoices)

我的ModelForm看起来像这样:

class ShoeForm(ModelForm):
    class Meta:
        model = Shoe
        fields = ['brand', 'size']

我希望表单需要输入而不是默认的空白选项,但我想在呈现的选项集中保留空白值。我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

ShoeForm添加custom clean method并检查该值是否仍为空白。如果是,请提出ValidationError

class ShoeForm(ModelForm):
    class Meta:
        model = Shoe
        fields = ['brand', 'size']

    def clean_brand(self):
        data = self.cleaned_data['brand']
        if data == '':
            raise forms.ValidationError("You need to select one brand!")
        return data

views.py中,只需检查if form.is_valid():即可。

答案 1 :(得分:0)

您真正想要做的唯一事情是在品牌领域设置必需:

class ShoeForm(forms.ModelForm):    
    def __init__(self, *args, **kwargs):
        super(ShoeForm, self).__init__(*args, **kwargs)
        self.fields['brand'].required = True