我知道如何清理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,但它没有用 .
任何想法我怎么能让这个工作 .
谢谢!
1 回答
根据您的错误消息,我假设
pracPhone
在您的模型中由models.IntegerField
表示 . 这意味着在ModelForm中,该字段由forms.IntegerField
表示 .forms.IntegerField
默认带有一些验证:需要
无效
min_value
max_value
您应该在
IntegerField
上覆盖验证的默认消息 .