tam*_*are 5 django django-models django-forms django-validation
我试图将所有与业务逻辑相关的验证移动到模型中,而不是将它们留在表单中。但在这里我遇到了一个棘手的情况,为此我想咨询 SO 社区。
在我的 SignupForm(一个模型表单)中,我有以下特定于字段的验证,以确保输入的电子邮件不存在。
def clean_email(self):
email = self.cleaned_data['email']
if ExtendedUser.objects.filter(email=email).exists():
raise ValidationError('This email address already exists.')
return email
Run Code Online (Sandbox Code Playgroud)
如果我要将此验证移动到模型中,根据官方文档,我会将其放入clean()相应的模型中ExtendedUser。但该文档还提到了以下内容:
Model.clean() 引发的任何 ValidationError 异常都将存储在特殊键错误字典键 NON_FIELD_ERRORS 中,该键用于与整个模型而非特定字段相关的错误
这意味着,对于clean(),我无法将由此引发的错误与特定字段相关联。我想知道模型是否提供类似于 forms' 的东西clean_<fieldname>()。如果没有,你会把这个验证逻辑放在哪里,为什么?
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |