我有一个字段:
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:为什么? 并且表单验证会引发错误。