报错信息 django.db.utils.IntegrityError: (1062, "Duplicate entry '75' for key 'user_id'")
User试用Django的AbstractUser父类
UserProfile 为扩展Django自带User模型
目标:实现用户注册
class User(AbstractUser):
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
class UserProfile(BaseModel):
"""用户表
User模型自带内容:
- username:用户名
- email: 电子邮件
- password:密码
- first_name:名
- last_name:姓
- is_active: 是否为活跃用户。默认是True
- last_login: 上次登录日期
- is_superuser: 是否为管理员。默认是False
- date_joined: 加入日期。系统自动生成。
"""
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
site = models.ForeignKey('Site', related_name='users', on_delete=models.SET_NULL, null=True)
phone = models.CharField("手机号码", max_length=11, null=True)
class Meta:
verbose_name = '用户扩展信息表'
verbose_name_plural = '用户'
def multi_departs(self):
if self.site and not self.site.del_flag:
return USER_WITH_SINGLE_SITE
else:
return USER_WITH_NO_SITE
def __str__(self):
return self.user.__str__()
user = User.objects.create_user(username=username, password=password, email=email, first_name=realname)
UserProfile.save(phone=phone, user_id=user.id, site_id=site_id)
以上代码报错 django.db.utils.IntegrityError: (1062, "Duplicate entry '75' for key 'user_id'")
原因:执行User.objects.create_user时候创建了user表记录,同时创建了userprofile 一对一关联表记录。再执行userprofile.save()就会报user_id重复
https://blog.csdn.net/weixin_42134789/article/details/80207322
解决:
user = User.objects.create_user(username=username, password=password, email=email, first_name=realname)
UserProfile.objects.filter(user_id=user.id).update(site_id=site_id, phone=phone)