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

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中的字段了

猜你喜欢

转载自blog.csdn.net/qq_37002901/article/details/89133426
今日推荐