gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:11:21 24 4
gpt4 key购买 nike

我更改了 django.contrib.auth.user 模型,其中电子邮件 ID 是唯一的。之后我添加了一个数据迁移来反射(reflect)相同的-

  • python Manage.py 数据迁移应用程序名称唯一密码。随后是 python manage.py schemamigration appname --auto-->无更改。最后,python manage.py 迁移appname。

  • 转发到 0003_unique_password

  • 应用程序名称:0037_unique_password.py

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

  • python 管理.py shell

  • 从 django.contrib.auth.models 导入用户

  • user=用户('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()。如果在数据库级别进行唯一性检查,此时您可能会遇到异常。如果您想在保存之前进行检查,请在模型实例上调用 is_valid()

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

关于django - django.contrib.auth.user 的唯一电子邮件约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14256081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com