Django通过(继承)框架默认的user表搭建自己的用户表users

本文介绍了如何在Django中通过继承AbstractUser来创建自定义用户表users。步骤包括新建users应用,创建UserProfile模型并扩展字段,以及在settings中配置和执行迁移操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django默认是创建好了user表的
在django.contrib.auth表下有一个AbstractUser模块,django设计了一些常用的字段,这段代码如下:

class AbstractUser(AbstractBaseUser, PermissionsMixin):
    
    username_validator = UnicodeUsernameValidator() if six.PY3 else ASCIIUsernameValidator()

    username = models.CharField(
        _('username'),
        max_length=150,
        unique=True,
        help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
        validators=[username_validator],
        error_messages={
            'unique': _("A user with that username already exists."),
        },
    )
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    email = models.EmailField(_('email address'), blank=True)
    is_staff = models.BooleanField(
     
    )
    is_active = models.BooleanField(
       
    )
    date_joined = models.DateTimeField()

    objects = UserManager()

    EMAIL_FIELD = 'email'
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')
        abstract = True

    def clean(self):
       
    def get_full_name(self):
    
    def get_short_name(self):
     
    def email_user(self, subject, message, from_email=None, **kwargs):

我们要做的就是
1.新建一个名字叫users的app,通过:startapp users创建
2.在users.models文件下新建一个UserProfile类,继承自AbstractUser
3.在这里就可以添加想要增加的用户信息了,代码如下:

class UserProfile(AbstractUser):
    GENDER = (
        ('male', '男'),
        ('female', '女')
    )
    nick_name = models.CharField(max_length=15, verbose_name="昵称", default="")
    birthday = models.DateField(verbose_name="生日", null=True, blank=True)
    gender = models.CharField(choices=GENDER, max_length=6, verbose_name="性别")
    address = models.CharField(max_length=50, verbose_name="地址", null=True, blank=True)

    class Meta:
        verbose_name = "个人信息"
        verbose_name_plural = verbose_name

    def __unicode__(self):
        return self.username

注意

1.添加app时一定要在设置中的APP选项中添加这个新增加的app
2.这时的django还不会识别这个新的users表,还要在setting文件夹中设置:AUTH_USER)MODEL = “users.UserProfile”系统才会更改
3.这时使用生成数据表的makemigration操作和migrate操作就可以看到userProfile表中已经有了我们想要的所有字段,包括AbstractUser中的字段了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值