首页 > 其他 > 详细

23-自定义用户模型

时间:2019-12-17 17:42:54      阅读:86      评论:0      收藏:0      [点我收藏+]

一、自定义用户模型

  Django比较好的地方就是自带用户系统,但在某些情况之下,自带的用户系统并不适合我们所创建的项目(我们可能删除某些字段,也有可能新增某些字段,或者哪些字段的信息修改必填还是允许为空),这个时候我们需要自定义用户模型。做法就是继承BaseUserManager或者继承AbstractBaseUser,然后到项目settings.py文件中指定的AUTH_USER_MODEL的用户模型类。

继承AbstractBaseUser

from datetime import datetime

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.


class UserProfile(AbstractUser):
    """
    用户信息相关(自定义用户模型)
    """
    name = models.CharField(max_length=30,null=True,blank=True,verbose_name="姓名")
    birthday = models.DateField(null=True,blank=True,verbose_name="出生年月")
    gender = models.CharField(max_length=6,choices=(("male",""),("female","")),default="female",verbose_name="性别")
    mobile = models.CharField(null=True,blank=True,max_length=11,verbose_name="电话")
    email = models.EmailField(max_length=100,null=True,blank=True,verbose_name="邮箱")

    class Meta:
        verbose_name = "用户"
        verbose_name_plural = verbose_name
        #username_field = "nickname" #让用户用nickname登录 而不是username
        #required_fields = ["mobile","email","birthday"] #用户填写个人信息必须填写我们要求的字段
    
    def has_perm(self, perm, obj=None):
        """自定义用户具体的权限"""
        pass
    def has_module_perms(self, app_label):
        """自定义用户具有访问那些应用的权限"""
        pass
    def is_staff(self):
        """自定义管理员权限"""
        pass
    
    def __str__(self):
        return str(self.name)

继承BaseUserManager:

from django.db import models
from django.contrib.auth.models import BaseUserManager


class MyUserManager(BaseUserManager):
   ......
    """这两个函数就是在createsuperuser 和创建用户的时候调用的两个函数(在函数里加入一些必填的字段)"""
    def create_user(self,username,password=None):
        """创建用户"""
        return user 
    def create_superuser(self,username,password):
        """创建超级用户"""
        return user

objects = MyUserManager()#关联模型类

23-自定义用户模型

原文:https://www.cnblogs.com/lishuntao/p/12055697.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!