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

IntegrityError(1452,'无法添加或更新子行:外键约束失败)

IntegrityError(1452,'无法添加或更新子行:外键约束失败)

烙印99 2022-10-18 17:07:23
我正在使用自定义用户模型(遵循本教程)并且一切正常。当我使用我在 /admin 会话中使用 createsuperuser 创建的管理员用户登录时,我可以添加/删除/编辑任何我想要的东西。当我使用其他用户登录时,我已授予员工和管理员权限,每当我想向数据库添加一些内容时,我都会收到此错误:IntegrityError at /admin/users/user/13/change/ (or whichever action I'm doing) (1452, 'Cannot add or update a child row: a foreign key constraint fails (`NMS_database`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))') [...]Exception Location:    /home/me/python_ve/lib/python3.8/site-packages/MySQLdb/connections.py in query, line 239这是我的用户模型:class User(AbstractBaseUser):    email = models.EmailField(verbose_name="email", unique=True, max_length=255)    first_name = models.CharField(max_length=30, blank=True, null=True)    surname = models.CharField(max_length=30, blank=True, null=True)    additional = models.BooleanField(default=False)    individual = models.BooleanField(default=True)    active = models.BooleanField(default=True) #can they login?    staff = models.BooleanField(default=False) #staff user non superuser    admin = models.BooleanField(default=False) #superuser    date_joined = models.DateTimeField(auto_now_add=True)    USERNAME_FIELD = 'email' # default identifier for that user which will used for logging in    #email (USERNAME_FIELD in this case) and password are required by default    REQUIRED_FIELDS = ['first_name', 'surname']    def __str__(self):        return "%s %s" % (self.first_name, self.surname)    def get_full_name(self):        return self.first_name    def has_perm(self, perm, obj=None):        return self.admin    def has_module_perms(self, app_label):        return True    @property    def is_staff(self):        return self.staff    @property    def is_admin(self):        return self.admin# hook in the New Manager to our Model    objects = UserManager()如何让不是超级管理员的用户真正能够在 /admin 中执行操作?
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

这是由于关于自定义用户模型的一般观点,即它们不能在中途引入。

具体来说,我的模型使用一个表users_user来存储有关新添加用户的详细信息,以及auth_user用于添加链接到我在数据库中的其他模型的外键的表。事实上,我将用户详细信息从users_user表复制粘贴到auth_user表(因此有重复)的临时解决方法解决了问题(即没有返回任何错误)。

这里的“简单”解决方案是完全删除数据库并重新创建它。就我而言,我发现的其他解决方案(例如this)没有帮助。


查看完整回答
反对 回复 2022-10-18
  • 1 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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