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()#关联模型类

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

时间: 2024-08-01 00:50:35

23-自定义用户模型的相关文章

【Python-Django定义用户模型类】Python-Django定义用户模型类详解!!!

定义用户模型类 1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架的核心和默认的模型. django.contrib.contenttypes是Django内容类型系统,它允许权限与你创建的模型关联. Django认证系统同时处理认证和授权 认证:验证一个用户是否它声称的那个人,可用于账号登录. 授权:授权决定一个通过了认证的用户被允许做什么. D

Django 重写用户模型

目录 Django 重写用户模型 修改配置文件,覆盖默认的User模型 引用User模型 指定自定义的用户模型 Django 期望你自定义的 User model 满足一些最低要求: 下面为一些AbstractBaseUser的子类必须定义的关键的字段和方法: 下面为一些AbstractBaseUser的子类可以使用的方法: 为你的User模型自定义一个管理器 扩展Django默认的User 自定义用户与内置身份验证表单 自定义用户和django.contrib.admin 自定义用户和权限 如

(九)ASP.NET自定义用户控件(2)

http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗体框架中: 用户控件:它是一小段页面,可以包括静态 HTML 代码和 Web 服务器控件.用户控件的好处是一旦创建了它,就可以在同一个 Web 应用程序的多个页面重用它.用户控件可以加入自己的属性,事件和方法. 自定义服务器控件:它是被编译的类,它通过编程生成自己的 HTML .服务器控件总是预编译

oneThink用户模型

1. User\Model\UcenterMemberModel.class.php 1 <?php 2 // +---------------------------------------------------------------------- 3 // | OneThink [ WE CAN DO IT JUST THINK IT ] 4 // +---------------------------------------------------------------------

看我是如何处理自定义线程模型---java

看过我之前文章的园友可能知道我是做游戏开发,我的很多思路和出发点是按照游戏思路来处理的,所以和web的话可能会有冲突,不相符合. 来说说为啥我要自定义线程模型呢? 按照我做的mmorpg或者mmoarpg游戏划分,线程被划分为,主线程,全局同步线程,聊天线程,组队线程,地图线程,以及地图消息分发派送线程等: 一些列,都需要根据我的划分,以及数据流向做控制. 游戏服务器,主要要做的事情,肯定是接受玩家的 命令请求 -> 相应的操作 -> 返回结果: 在服务器端所有的消息都会注册到消息管理器里,然

基于Activiti5.15.1 自定义用户、组(User,Group)实现

基于Activiti5.15.1 自定义用户.组(User,Group)实现 本人刚接触Activiti,最近工作中需要将Activiti中原有的用户,组(ACT_ID_USER,ACT_ID_GROUP,ACT_ID_MEMBERSHIP)表替换为公司已有的相关表.查看了咖啡兔及论坛相关文章.今天有空整理一下.以帮助后续有此需要的初学者. 自定义Group,User工厂类,实现SessionFactory接口 1)CustomGroupEntityManagerFactory @Service

Qt 学习之路 :自定义只读模型

model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView.QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面.但是,面对变化万千的需求,Qt 预定义的几个模型是远远不能满足需要的.因此,我们还必须自定义模型. 类似QAbstractView类之于自定义视图,QAbstractItemModel 为自定义模型提供了一个足够灵活的接口.它能够支持数据源的层次结构,能够对数据进行增删改操作,还能够支持拖放.不过

Django自定义用户认证系统Customizing authentication

扩展已有的用户模型Extending the existing User model 有两种方法来扩展默认的User Model而不用重写自己的模型.如果你不需要改变存储在数据库中的字段,而只是需要改变Model的行为,您可以创建一个基于User的代理Model.允许的行为包括默认的ordering,custom managers, 或者 custom model methods. 如果你想存储与User有关的信息,可以使用一个OneToOneField字段关联到一个存储额外信息的Model.这

Django:创建用户模型报错: (admin.E108) The value of &#39;list_display[4]&#39;解决方案

参考资料:虫师-<web接口开发与自动化测试:基于python语言> 日常学习Django框架中,创建了用户模型,但是页面功能验证时候,提示不能进行列表字段操作,debug好久,才找到问题原因,心累... 下面是大概过程和解决方案... models.py文件代码: 1 from django.db import models 2 3 # Create your models here. 4 # 发布会表 5 class Event(models.Model): 6 name = models