23-自定义用户模型
Posted lishuntao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了23-自定义用户模型相关的知识,希望对你有一定的参考价值。
一、自定义用户模型
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-自定义用户模型的主要内容,如果未能解决你的问题,请参考以下文章