Django--表单验证(为什么我不能手动清理Integer Form字段)
|
这应该很简单,但是我没有从Django文档中弄清楚。我有一个IntegerField模型字段,从中我创建了一个ModelForm字段。有问题的字段包含$值(价格),从UX的角度来看,如果用户在输入$ 10而不是10时未收到错误消息(\'输入整数\'),则是更可取的。
我已经尝试过手动清理表单,但似乎clean_field方法在其他验证方法之后运行。到目前为止,我的阅读似乎也证实了这一点。
def clean_bill(self):
bill = self.cleaned_data[\"bill\"]
if \'$\' in bill:
bill=bill.replace(\'$\',\'\',1)
return bill
在将IntegerField保留在模型窗体中时,是否可以解决此问题?我应该让它成为RegexField吗?
编辑:我最终与上述和RegexField的组合。仍然好奇是否还有另一种/更好的方法。
bill= forms.RegexField(label=_(\"Bill\"), max_length=10,required=True, regex=r\'^\\$?[\\d]+$\',
error_messages = {\'invalid\': _(\"Please enter a whole number.\")})
没有找到相关结果
已邀请:
2 个回复
素汞读
磁辫覆氓
方法,并且已经在第一步中提高了
(
方法)。 我认为在表单级别上您无能为力。但是,您可以做的是在将视图中的“ 5”数据传递到表单之前对其进行处理。一些简单的例子: