【发布时间】:2012-07-06 06:32:09
【问题描述】:
我知道如何清理 django 的 forms.py 中的数据,但我遇到了一个以前从未遇到过的奇怪错误
这是我的forms.py:
class BetaPhoneForm(ModelForm):
class Meta:
model = RegisterHotTable
fields = ('pracPhone',)
def clean_pracPhone(self):
pracPhone = self.cleaned_data['pracPhone']
if pracPhone is None:
raise forms.ValidationError("This value cannot be empty")
else:
if not pracPhone.isdigit():
raise forms.ValidationError("Please enter a valid phone number.")
return pracPhone
所以我正在使用自定义清理方法 clean_pracPhone 清理我的字段。当我将值留空并看到“此值不能为空”时,它适用于部分
我希望表单显示错误“请输入有效的电话号码”。当我输入字母而不是数字时,而不是标准的“输入整数”。
事实上,我意识到当我输入字母时,这个方法甚至没有运行。
我知道我可以通过创建自定义字符字段而不使用 ModelForm 来“破解”这个问题,但我真的不想这样做。
我也试过用 self.data 代替 self.cleaned_data 但没用。
任何想法我如何使它工作。
谢谢!
【问题讨论】:
-
你检查过那个方法中
pracPhone的值了吗?该方法是否运行,您是否确实得到了您期望的字符串? -
是的,我检查了这个。
pracPhone的值始终为空白,除非我做正确的事情并输入一个数字。它就像在调用此方法之前进行验证的一部分。我怀疑cleaned_data 已经在验证这一点。而且我不知道如何防止它
标签: django forms validation