python - 姜戈;使用具有多个字段的相同验证器
问题描述
客观的 :
我想覆盖first_name
和last_name
来自AbstractUser model
.
我到底想要什么:
我想创建validator
一个告诉是否填充first_name
或last_name
填充的内容。所以我想用这两个参数调整同一个验证器。我该如何创作?
解决方案
您可以覆盖模型的clean()
方法。作为参考,通过 保存模型实例ORM
不会调用模型的clean()
方法。
所以当你子类化时AbstractUser
:
from django.core.exceptions import ValidationError
class User(AbstractUser):
def clean(self):
super().clean()
if not self.first_name and not self.last_name:
raise ValidationError({
'first_name': ValidationError('Please set this', code='error1'),
'last_name': ValidationError('... or this', code='error2')
})
不要忘记按照文档Django
中的说明配置您的项目。您还需要确保使用此模型的表单始终实现字段和,否则您将获得.first_name
last_name
ValueError
因此,每次您将 aModelForm
与您的User
模型结合使用时,clean()
都会被调用。例如 in Django
,UserChangeForm
等UserCreationForm
。
推荐阅读
- reactjs - 构建新面板插件时如何在 Grafana 中导入主题?
- sql - 是否可以在查询中添加一列不同/唯一值?
- url - 为什么 aria2c 忽略 URL 中的“标题”?
- xml - 使用 XSLT 将根元素和名称空间添加到 XML 中的所有元素
- javascript - 如何使 sweetAlert2 输入接受小数点数字类型
- sql - 如何在 SQL 中将带有空格的值拆分为两列?
- git - git 无法推送现有的存储库。'remote-httpshttps' 不是 git 命令
- php - 如何在laravel中对平均评分的帖子进行排序
- asp.net - 是否存在 WsFederationAuthenticationOptions WReply 和 CallbackPath 值可能不匹配的情况?
- or-tools - LP 热启动 (GLOP)