为了账号安全,请及时绑定邮箱和手机立即绑定

使同一个验证器具有多个字段

使同一个验证器具有多个字段

九州编程 2021-06-12 18:13:22
客观的 :我想覆盖first_name和last_name从AbstractUser model.我到底想要什么:我想创建validator一个告诉我们是否填充first_name或last_name填充。所以我想用这两个参数调整同一个验证器。我该如何创作?
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超6个赞

您可以覆盖模型的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()都会被调用。如在Django的UserChangeForm,UserCreationForm等等。


查看完整回答
反对 回复 2021-06-16
  • 1 回答
  • 0 关注
  • 173 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号