我遇到了一个独特的问题。 我在我的floatField中输入“$ 90”值。 我认为它应该被清理并在模型中存储为“90.0”。
但是当我输入“$ 90”并调用clean_filed方法时,它不会调用那个干净的方法。 但是当我在干净的(自我)方法上应用断点并试图获得它的价值时,它说没有。
请帮帮我。这是我的代码。
Model
class Project(models.Model):
foo = models.FloatField("foo",
null=True, blank=True
)
forms
widgets = {
'foo': forms.TextInput(attrs={'currency': 'true'})}
def clean_foo(self):
value = self.cleaned_data.get('foo')
print value # i get NONE here.............
return value
答案 0 :(得分:14)
表单API中的clean_<field>
挂钩用于执行其他验证。它在字段调用其clean方法后调用。如果该字段不认为输入有效,则不调用clean_<field>
。这在自定义验证文档https://docs.djangoproject.com/en/stable/ref/forms/validation/
对于任何字段,如果Field.clean()方法引发ValidationError,则不会调用任何特定于字段的清理方法。但是,仍会执行所有剩余字段的清理方法。
在您的情况下,由于$90
未作为浮点验证,因此不会调用它。相反,你应该做的是创建一个FloatField
的子类,它在将输入验证为浮点数之前清除输入(删除$
等)。