使用AbstractUser内置用户模型创建自定义用户模型

上述的内容只是为了记录,因为在操作的时候一直没留意到使用的是AbstractBaseUser,而走了不少歪路。

AbstractUser是一个完整的用户模型

AbstractBaseUser仅包含身份验证功能,没有实际的字段。

 

操作流程

  • APP models.py文件中引入以下内容
  1. from django.contrib.auth.models import AbstractBaseUser
  • 在models.py文件下定义新增的字段
  1. # 用户模型
  2. class User(AbstractUser):  # 注意字段后括号的内容
  3.     # 新增以下字段
  4.     avatar = models.ImageField(upload_to='avtar/%Y/%m', default='avtar/default.png', max_length=100, blank=True,
  5.                                verbose_name='用户头像')
  6.     qq = models.CharField(max_length=20, blank=True, null=True, verbose_name='QQ号码')
  7.     mobile = models.CharField(max_length=11, blank=True, unique=True, null=True, verbose_name='手机号码')
  8.     # 字段命名
  9.     class Meta:
  10.         verbose_name = '用户'
  11.         verbose_name_plural = verbose_name
  12.     # 返回字段名
  13.     def __str__(self):
  14.         return self.username
  • 在项目setting.py文件中自定义用户
  1. # blog.User 为APP名 +数据库中用户字段
  2. AUTH_USER_MODEL = 'blog.User'

使用AbstractUser内置用户模型创建自定义用户模型

 

参考内容:

https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin.has_perms

http://www.cnblogs.com/caseast/p/5909987.html

扩展阅读:

http://python.jobbole.com/86806/

李金龙

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: