Django 扩展Django自带User模型 实现用户注册

报错信息 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)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值