首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django中创建自定义用户模型时,继承自models.Model和AuthUser有什么不同?

在Django中创建自定义用户模型时,继承自models.ModelAuthUser有以下不同之处:

  1. 继承自models.Model:当创建自定义用户模型时,可以直接继承自models.Model类。这种方式允许开发人员完全自定义用户模型的字段和行为。可以通过在模型类中定义字段来添加额外的用户属性,如姓名、年龄等。同时,可以通过重写模型类的方法来自定义用户模型的行为,如验证、保存等。
  2. 继承自AuthUserAuthUser是Django内置的用户模型类,它继承自AbstractUser。当创建自定义用户模型时,可以选择继承自AuthUser类。这种方式会继承AuthUser类中已定义的字段和方法,如用户名、密码等。通过继承AuthUser类,可以快速创建具有基本用户功能的自定义用户模型,而无需重新定义这些基本功能。

总结:

  • 继承自models.Model允许完全自定义用户模型的字段和行为。
  • 继承自AuthUser可以快速创建具有基本用户功能的自定义用户模型。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 1.8 官方文档翻译:2-1-1 模型语法

按照上面的方式,Pizza 的表单中将允许用户选择不同的Toppings。 另见 完整的示例参见多对多关系模型示例。 ManyToManyField 字段还接受别的参数,模型字段参考中有详细介绍。...用法其他字段类型一样:模型里面做为类属性包含进来。 当某个对象想扩展另一个对象,最常用的方式就是在这个对象的主键上添加一对一关系。 OneToOneField要一个位置参数:与模型关联的类。...多表继承的Meta 多表继承,子类继承父类的 Meta类是没什么意义的。所有的 Meta 选项已经对父类起了作用,再次使用只会起反作用。...不同之处在于:你可以代理 model 改变默认的排序设置默认的 manager ,更不会对原始 model 产生影响。 声明代理 model 和声明普通 model 没有什么不同。...但在普通的多表继承,子类不能继承父类的 manager ,这是因为处理非基类字段,父类的 manager 未必适用。 后一种情况 管理器文档详细介绍。

4.9K20

django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

这样, Pizza 的管理后台中,就会允许用户选择不同的 toppings。...多表继承的Meta 多表继承,子类继承父类的 Meta 内嵌类是没什么意见的。所有的 Meta 选项已经对父类起了作用,再次使用只会起反作用。...不同之处在于:你可以代理 model 改变默认的排序设置默认的 manager ,更不会对原始 model 产生影响。 声明代理 model 和声明普通 model 没有什么不同。...不管你怎么改动,都不会在查询 User 得到 MyUser。 基类的限制 代理 model 必须继承一个非抽象基类。你不能继承自多个非抽象基类,这是因为一个代理 model 不能连接不同的数据表。...但在普通的多表继承,子类不能继承父类的 manager ,这是因为处理非基类字段,父类的 manager 未必适用。 manager documentation 详细介绍。

3.1K30

Django 模型继承 BaseModel

模型继承 模型继承 Django 与普通类继承 Python 的工作方式几乎完全相同,但也仍应遵循本页开头的内容。这意味着其基类应该继承 django.db.models.Model。...从抽象基类继承来的字段可被其它字段或值重写,或用 None 删除。 对很多用户来说,这种继承可能就是你想要的。它提供了一种 Python 级抽出公共信息的方法,但仍会在子类模型创建数据表。...代理对象存在的全部意义是帮你复用原 Person 提供的代码自定义的功能代码(并未依赖其它代码)。不存在什么方法能在你创建完代理后,帮你替换所有 Person (或其它)模型。...基类约束¶ 一个代理模型必须继承一个非抽象模型类。你不能继承多个非抽象模型类,因为代理模型无法不同数据表之间提供任何行间连接。... Django 模型字段通常不允许这样做。如果一个非抽象模型基类一个名为 author 的字段,你就不能在继承自该基类的任何类创建另一个名为 author 的模型字段或属性。

2K10

【云+社区年度正文】Django从入门到精通No.2----模型

二、模型的定义 模型可以定义储存数据的字段值,比如我们进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型是与数据库有关的操作集合。...两个额外的可选参数: auto_now ,每次保存对象自动设为当前日期 auto_now_add ,创建对象自动设为当前日期。...ImageField ClearableFileInput 所有属性方法都继承 FileField ,此外验证上传的对象是不是有效的图像。增加了 height width 两个属性。...# Admin或ModelForm显示关联数据,提供的条件,字典类型 symmetrical=None # 仅用于多对多关联,用于指定内部是否创建反向操作的字段,...# 默认创建第三张表,数据库中表的名称 3.一对一 一对一其实就是 一对多 + 唯一索引,当两个类之间继承关系,默认会创建一个一对一字段,一对一使用OneToOneField来实现,如下: from

2.1K00

探索 PythonDjango 支持分布式多租户数据库,如 Postgres+Citus

在所有主键唯一约束包含 account_id 2.1 将 account_id 包含到主键 Django 会自动模型创建一个简单的 “id” 主键,因此我们需要通过自己的自定义迁移来规避这种行为...' 3.1 介绍 TenantModelMixin TenantManager 模型现在不仅继承 models.Model,还继承 TenantModelMixin。...要在你的 models.py 文件做到这一点,你需要执行以下导入 from django_multitenant.mixins import * 以前我们的示例模型继承 models.Model...实际项目中的模型也可能继承其他 mixin,例如 django.contrib.gis.db,这很好。 此时,您还将引入 tenant_id 来定义哪一列是分布列。...tenant_id = 'account_id' objects = TenantManager() 3.2 处理外键约束 对于 ForeignKey OneToOneField 约束,我们几种不同的情况

2K10

django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)

自定义管理器 一个特定的模型,你可以通过继承管理器类来构建一个自定义的管理器,以及实例化你的自定义管理器。...(CustomQueryset) class MyModel(models.Model): objects = CustomManager() 自定义管理器模型继承继承模型管理器两者之间配合得并不是很好...下面就是 Django 如何处理自定义管理器模型继承(model inheritance)的: 定义非抽象基类的管理器是 不会 被子类继承的。...整个这一节,我们将那种由 Django 为你创建的管理器称之为 “自动管理器”,既有因为没有管理器而被 Django 自动添加的默认管理器, 也包括访问关联模型使用的临时管理器。...你也不应该在模型中使用这个属性之后,类上改变它。这是因为模型类被创建,这个属性值马上就会被处理,而且随后不会再读取这个属性值。

95520

如何在 Django 创建抽象模型类?

我们将学习如何在 Django 创建抽象模型类。 Django 的抽象模型类是一个模型,它用作其他模型继承的模板,而不是一个旨在创建或保存到数据库的模型。...应用程序,可以使用抽象模型定义多个模型共享的相似字段行为。使用 Django,您可以定义一个派生 Django.db.models 的模型类,以建立一个抽象模型类。...此抽象类的属性方法将由派生它的任何模型继承,但不会创建新的数据库表。 抽象模型可以像标准模型一样定义字段、方法元数据。... Django ,从抽象模型继承遵循与传统模型相同的准则。超类声明的所有字段方法都由子类继承,子类可以根据需要替换或添加它们。开发从抽象模型派生的新模型,不应将抽象属性设置为 True。...创建抽象模型类的步骤 步骤 1 - 设置一个继承 django.db.models 的新类。抽象模型类使用模型。此类可以具有您喜欢的任何名称,但最好使用准确描述它在应用程序的功能的名称。

17530

拓展 User 模型

nickname(昵称)属性,用来记录用户的昵称信息,设置 blank=True 的目的是让用户注册无需填写昵称。...如果你继承了 auth.User 类,这会变成多表继承目前的情况下这种继承方式是不被推荐的。关于 Django 的抽象模型多表继承,请查阅 Django 的官方文档 模型继承。...所以我们采用另一种不改动数据库表的方式来拓展用户模型,具体来说,我们创建一个模型(通常命名为 Profile)来记录用户相关的数据,然后使用一对一的方式将这个 Profile 模型 User 关联起来...PS:如果你使用了Profile 模式,你可能希望创建 User 对象的时候同时也创建与之关联的 Profile 对象。你可以使用 Django 的 Signal 实现这个需求。...OK,自定义的 User 模型已经建立好了,接下来就是如何创建用户,即用户注册流程了。 总结 本教程的示例项目代码位于 GitHub:Django Auth Example。

1.5K50

django 关于User模型

那么这时候我们就需要扩展用户模型了。扩展用户模型多种方式。这里我们来一一讨论下。 1. 设置Proxy模型: 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的。...,我们定义了一个Person类,让他继承User,并且Meta设置proxy=True,说明这个只是User的一个代理模型。...继承AbstractBaseUser模型: 如果你想修改默认的验证方式,并且对于原来User模型上的一些字段不想要,那么可以自定义一个模型,然后继承AbstractBaseUser,再添加你想要的字段...是AbstractBaseUser已经添加好了的,我们直接继承就可以了。...如何使用这个自定义模型:比如以后我们一个Article模型,需要通过外键引用这个User模型,那么可以通过以下两种方式引用。 第一种就是直接将User导入到当前文件

1.1K30

Django 模型自定义Manager模型方法

1.自定义管理器(Manager) 语句Book.objects.all(),objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager....每个Django模型至少有一个manager,你可以创建自定义manager以定制数据库的访问....这里两个方法创建自定义manager:添加额外的manager;修改manager返回的初始Queryset. 添加额外的manager 增加额外的manager是为模块添加表级功能的首选办法....objects = BookManager() def __str__(self): return self.title 1.我们创建一个BookManager类,继承django.db.models.Manager...还有一组模型方法了封装了一些你可能想要自定义的数据库行为.特别是你可能想要修改save()delete()的工作方式.你可以自由的重写这些方法(以及其他的模型方法)来改变行为.重写内置方法的经典用例就是你想要在保存一个对象是做些其他的什么

2.7K20

自定义 Django的User Model,扩展 AbstractUser类注意事项

You must then provide some key implementation details: 2.引用User模型 AUTH_USER_MODEL 设置为自定义用户模型,如果你直接引用...就行了; 总之,如果你的User定义了不同的字段, 你就要去自定义一个管理器,它继承BaseUserManager并提供两个额外的方法: create_user(username_field, password...5.自定义用户与内置身份验证表单 Django内置的formsviews相关联的user model一些先决条件。...django.contrib.admin 如果你想让你自定义的User模型也可以站点管理上工作,那么你的模型应该再定义一些额外的属性方法。...7.自定义用户权限 如果想让自定义用户模型包含Django的权限控制框架变得简单,Django提供了PermissionsMixin。

5.9K20

django自定义非主键增字段类型详解(auto increment field)

一个单选的下拉框(可以被重复选择) 例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。...多对多:某表创建一行数据是,一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:某表创建一行数据一个单选的下拉框(下拉框的内容被用过一次就消失了 例如:原有含10...一对一其实就是 一对多 + 唯一索引 # 2.当两个类之间继承关系,默认会创建一个一对一字段 # 如下会在A表额外增加一个c_ptr_id列且唯一: class C(models.Model):...,symmetrical用于指定内部是否创建反向操作的字段 # 做如下操作不同的symmetrical会有不同的可选字段 models.BB.objects.filter(...) # 可选字段:...=None, # 自定义第三张表,使用字段用于指定关系表那些字段做多对多关系表 from django.db import models class Person(models.Model): name

2.2K10

django模型类管理器——数据库操作的封装详解

当没有为模型类定义管理器Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。...管理器是Django模型进行数据库操作的接口,Django应用的每个模型都拥有至少一个管理器。Django支持自定义管理器类,继承models.Manager。...books = BookInfoManager() 2.管理器类定义创建对象的方法 当创建模型类对象django不会对数据库进行读写操作,调用save()方法才与数据库交互,进行insert或update...模型类管理器以及自定义管理器 模型类.objects.all()- objects是一个什么东西呢?...注意区别 把方法定义管理器的时候,管理器中有个自带的方法create(),使用这个时候必须带参数 ? 数据库就已经了 ? 模型管理器类模型类的关系 ?

1.3K10

自定义Django认证系统的技术方案

自定义新权限 除了增删改查权限,有时我们需要更多的权限,例如,为myapp的BlogPost创建一个can_publish权限: 方法1 meta配置 class BlogPost(models.Model...python manage.py migrate命令后,就会创建这个新权限,接着就可以view编写代码判断用户是否有这个权限来决定能否发表文章。...Django除了User模型,还有2个抽象模型AbstractUserAbstractBaseUser,从源码可以看到它们的继承关系: class User(AbstractUser):...这是因为一般继承2个用途,一是继承父类的属性方法,并做出自己的改变或扩展,实现代码重用。但是这种方式会导致子类也包含了父类的实现代码,代码强耦合,所以实践不会这么做。...继承AbstractBaseUser 继承AbstractUser只能做扩展,如果我们想完全自定义用户模型,那么就需要继承AbstractBaseUser,再重写属性方法。

1.2K10

第 03 篇:创建 Django 博客的数据库模型

模型的代码通常写在相关应用的 models.py 文件里。已经代码做了详细的注释,说明每一句代码的含义。但如果你移动端下阅读不便的话,也可以跳到代码后面看正文的里的讲解。...(models.Model): """ django 要求模型必须继承 models.Model 类。...author = models.ForeignKey(User, on_delete=models.CASCADE) 博客模型代码代码详解 首先是 Category Tag 类,它们均继承 models.Model...提示: 本教程我们会教你这些类型的使用方法,但以后你开发自己的项目,你就需要通过阅读 django 官方文档 关于字段类型的介绍[1] 来了解哪些数据类型可以使用以及如何使用它们。...Post 类也一样,必须继承 models.Model 类。

55240

Django项目知识点(三)

app_label = 'myapp' db_table db_table是指定自定义数据库表明的。Django一套默认的按照一定规则生成数据模型对应的数据库表明。...注意:Django一个模型只允许一个增字段,并且该字段必须为主键!...多对多:某表创建一行数据是,一个可以多选的下拉框 不同的学生不同课程表 再比如文章和标签的关系。一篇文章可以多个标签,一个标签可以被多个文章所引用。...一对一:某表创建一行数据一个单选的下拉框(下拉框的内容被用过一次就消失了) 一个学生信息表就只用一个对应的详细信息表 再比如一个用户一个用户信息表。...在这里插入图片描述 多对多必须through=‘Enroll' 就是Enroll表才能有课程表,想下没有学生报名还上什么课,必须设中间关联表就是学生报名表 ?

1.8K30

Django源码学习-5-Manager 模型自定义-上

Django源码学习-4-Signals 信号量 Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计Form...每个Django模型至少有一个manager,可以创建自定义 manager 以定制数据库的访问。...Django内建的User模型可能不适合某些类型的项目, Django 重写用户模型,就用到了 AbstractBaseUser、BaseUserManager 来重构用户模型,而Django自带的用户模型管理器...objects = BookManager() def __str__(self): return self.title 1.创建一个BookManager类,继承django.db.models.Manager...现在可以进行下面的操作: #这是自定义的manager的查询方法 >>> Books.objects.title_count('django') 2 # 默认的查询方法依然可用 >>> Books.objects.filter

64420

django关联,auth模块

一、关联 写蛮好的一篇博客:https://www.cnblogs.com/Kingfan1993/p/9936541.html 1.一对多关联 1.表内关联是指表内数据相关联的对象表是相同字段,...,我们就可以通过关联来建立多对多的关系 2.通过ManyToManyField将外键关联自身的主键id # models.py class User(models.Model): name...manage.py migrate提交建表模型之后,会生成两个表,一个是主表,另一个是从表 app_user表 app_user_r表 4.从表的的两个字段,一个是 from_主表名_id,一个是...= "app名.models里面对应的模型表名" AUTH_USER_MODEL = "app01.User" 就可以app下的models.py文件创建我们自己的用户信息表了 # models.py... from django.contrib.auth.models import User,AbstractUser # 继承了auth的user表 class UserInfo(AbstractUser

1.1K20

DjangoORM介绍字段及其参数

几乎所有的软件开发过程中都会涉及到对象关系数据库。在用户层面业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库。...示例   app里面的models.py定义一个Person模型,包含 first_name  last_name。...bigint增列,必须填入参数 primary_key=True 注:当model如果没有增列,则自动会创建一个列名为id的列 from django.db import...symmetrical:仅用于多对多关联,指定内部是否创建反向操作的字段。默认为True。...Django一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定,比如: table_name='my_owner_table' 若不提供该参数, Django

2.8K80
领券