加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django.contrib.auth.user的唯一电子邮件约束

发布时间:2020-12-20 13:32:30 所属栏目:Python 来源:网络整理
导读:我更改了 django.contrib.auth.user模型,其中我将电子邮件ID设置为唯一.之后我添加了数据移植以反映相同的情况 – python manage.py datamigration appname unique_password. 其次是python manage.py schemamigration appname –auto – 没有变化.最后,pytho
我更改了 django.contrib.auth.user模型,其中我将电子邮件ID设置为唯一.之后我添加了数据移植以反映相同的情况 –

> python manage.py datamigration appname unique_password.
其次是python manage.py schemamigration appname –auto – >没有变化.最后,python manage.py迁移appname.
>向前迁移到0003_unique_password
>
应用程序名称:0037_unique_password.py

现在,当我添加一个电子邮件不唯一的用户时,它会给我一个错误,并且不允许我通过django admin创建用户.但当我这样做时:
>

> python manage.py shell
>来自django.contrib.auth.models导入用户
>
用户=用户( ‘cust1’,‘123’,‘xxx@gmail.com’)
即使’xxx@gmail.com’已经存在,也会创建一个用户对象.

如何为现有项目(带数据)的django.contrib.auth.user.email添加唯一约束?

解决方法

根据模型验证 documentation,在模型验证期间检查唯一性.在模型上调用save()不会自动导致模型验证.管理员应用程序将调用模型验证.

没有什么能阻止您在Python中创建User对象,例如user = User(‘cust1′,’123′,’xxx@gmail.com’),然后执行user.save().如果在数据库级别存在唯一性检查,则此时可能会出现异常.如果要在执行保存之前进行检查,请在Model实例上调用is_valid().

如果希望在保存之前自动验证每个User对象,请在保存进行之前使用pre_save Django信号进行模型验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读