gpt4 book ai didi

Django ModelForm 浮点字段不调用 Clean_Field 方法

转载 作者:行者123 更新时间:2023-12-04 21:58:06 27 4
gpt4 key购买 nike

我有一个独特的问题。
我在我的 floatField 中输入了“90 美元”的值。
我认为它应该被清洁并在模型中存储为“90.0”。

但是当我输入“$ 90”并调用 clean_filed 方法时,它不会调用该 clean 方法。
但是当我在 clean(self) mehthod 上应用断点并尝试获取它的值时,它说 None。

请帮帮我。这是我的代码。

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

最佳答案

clean_<field>表单 API 中的钩子(Hook)用于进行额外的验证。在字段调用其 clean 方法后调用它。如果该字段认为输入无效,则 clean_<field>不叫。这在自定义验证文档 https://docs.djangoproject.com/en/stable/ref/forms/validation/ 中有说明。

For any field, if the Field.clean() method raises a ValidationError, any field-specific cleaning method is not called. However, the cleaning methods for all remaining fields are still executed.



在你的情况下,因为 $90不验证为浮点数,它不会被调用。相反,您应该做的是创建 FloatField 的子类。在将输入验证为浮点数之前清理输入(删除 $ 等)。

关于Django ModelForm 浮点字段不调用 Clean_Field 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com