2018-06-29-django-16重写User模型

重写User模型

1 xfzauth\models.py

(xfzauth是app名)

# encoding:utf-8
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from django.db import models


class UserManager(BaseUserManager):
    def _create_user(self, telephone, username, password, **kwargs):
        user = self.model(telephone=telephone, username=username, **kwargs)
        user.set_password(password)
        user.save()

    def create_user(self, telephone, username, password, **kwargs):
        kwargs['is_superuser'] = False
        return self._create_user(telephone, username, password, **kwargs)

    def create_super(self, telephone, username, password, **kwargs):
        kwargs['is_superuser'] = True
        return self._create_user(telephone, username, password, **kwargs)


class User(AbstractBaseUser, PermissionsMixin):
    telephone = models.CharField(max_length=11, unique=True)
    username = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    is_active = models.BooleanField(default=True)
    gender = models.IntegerField(default=0)  # 0位置 1男 2女
    date_join = models.DateTimeField(auto_now_add=True)

    # USERNAME_FIELD :这个属性是以后在使用authenticate
    # 进行验证的字段
    USERNAME_FIELD = 'telephone'
    # 这个属性用来,以后在命令行中使用createsuperuser命令
    # 的时候,会让你输入的字段
    REQUIRED_FIELDS = ['username']
    # 以后给每个用户发送邮箱的时候,就会使用这个属性指定的字段值来发送
    EMAIL_FIELD = 'email'

    objects = UserManager()

    def get_full_name(self):
        return self.username

    def get_short_name(self):
        return self.username

2 项目的settings.py
# 安装app
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...,
    'apps.xfzauth'
]

#添加AUTH_USER_MODEL

#更换成自定义的User
#AUTH_USER_MODEL,这个属性,是django内置的,他会主动到这个文件夹查找
#这个属性,如果找到了,那么就会使用这个属性指定的模型来作为User对象
#AUTH_USER_MODEL;这个属性是一个字符串,他的规则是“appname.Modelname”
#如果我们设置了AUTH_USER_MODEL,那么这个项目的makemigrations以及migrate命令
#必须要在设置完这些东西以后执行,不然会有冲突

AUTH_USER_MODEL = 'xfzauth.User'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值