当字段值为0时,Django self.cleaned_data.get(" field")为None:为什么?

时间:2017-10-11 12:30:01

标签: django django-forms

我有一个字段:

models.py
    class MyClass(models.Model) :
    myfield = models.FloatField(blank=True, null=True)

以及处理多个字段上的条件控件的表单验证,如果self.cleaned_data.get(" myfield")为None,则必须引发错误。

forms.py

class VarianteNewForm(forms.ModelForm):

    class Meta:
        model = Variante
        exclude = ('appareil','scenario','published_date', 'version')
        labels = {
            'cas' : "Nom du cas",
            'myfield' : "Dévers",
            'declivite_pointe' : "Déclivité",
            'altitude_pointe_bas' : "Altitude",
        }

    def fields_required(self, fields):
        #"""Used for conditionally marking fields as required."""
        #cf. https://www.fusionbox.com/blog/detail/creating-conditionally-
         required-fields-in-django-forms/577/

        for field in fields:
            if not self.cleaned_data.get(field, ''):
                msg = forms.ValidationError("Please.... " + field)
                self.add_error(field, msg)

    def clean(self):
        option = self.cleaned_data.get("option")
        myfield = self.cleaned_data.get("myfield")
        declivite_pointe = self.cleaned_data.get("declivite_pointe")
        altitude_pointe_bas = self.cleaned_data.get("altitude_pointe_bas")

    if (option == 'pointe') :
            self.fields_required(['myfield', 'declivite_pointe', 
           'altitude_pointe_bas'])

    return self.cleaned_data

我的问题是:

我想接受价值" 0"正确的。 但是当用户为字段myfield输入0时,self.cleaned_data.get(" myfield")为None:为什么? 并且表单验证会引发错误。

0 个答案:

没有答案