首页 > 其他分享 >django——继承默认User模型进行自定义

django——继承默认User模型进行自定义

时间:2023-05-23 15:24:10浏览次数:33  
标签:name 自定义 models django python CustomUser User

自定义用户模型在 Django 中非常常见。下面是一个简单的示例,演示如何扩展 Django 默认的 User 模型,以添加自定义字段和方法:

python复制代码
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # 添加自定义字段
    age = models.PositiveIntegerField(null=True, blank=True)
    bio = models.TextField(max_length=500, blank=True)

    # 添加自定义方法
    def get_full_name(self):
        return f"{self.first_name} {self.last_name}"

在上面的代码中,我们从 django.contrib.auth.models 导入了 AbstractUser 类,并创建了一个名为 CustomUser 的子类。然后,我们通过添加两个自定义字段(agebio)来扩展 User 模型。这些新字段将允许我们在用户注册时收集更多信息。

此外,我们还添加了一个名为 get_full_name() 的自定义方法,该方法返回用户的完整名称。

接下来,我们需要在项目的 settings.py 文件中指定我们的自定义用户模型:

python复制代码
AUTH_USER_MODEL = 'myapp.CustomUser'

请注意,myapp 应替换为您的应用程序的名称。

最后,我们需要对现有的数据库模式进行迁移,以便更新用户表结构:

复制代码
python manage.py makemigrations
python manage.py migrate

完成上述步骤后,我们的自定义用户模型就可以在 Django 中使用了。我们可以像访问默认的 User 模型一样访问它,例如:

python复制代码
from myapp.models import CustomUser

# 创建新用户
user = CustomUser.objects.create_user(
    username='johndoe',
    password='secret',
    email='[email protected]',
    first_name='John',
    last_name='Doe',
    age=30,
    bio='Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
)

# 调用自定义方法
full_name = user.get_full_name()

标签:name,自定义,models,django,python,CustomUser,User
From: https://www.cnblogs.com/7dao/p/17425308.html

相关文章

  • 直播app开发搭建,scroll-view封装自定义下拉刷新
    直播app开发搭建,scroll-view封装自定义下拉刷新完整代码 <!--container.vue--><template><view><scroll-viewscroll-y="true"class="scroll-view":refresher-enabled="refresh":refresher-triggered="triggered":refresher-t......
  • (三)Spring源码解析:自定义标签解析
    一、使用示例步骤1:创建User实体步骤2:定义一个XSD文件描述组件内容步骤3:创建BeanDefinitionParser接口的实现类,用来解析XSD文件中的定义和组件定义。步骤4:创建NamespaceHandlerSupport实现类,目的是将组件注册到Spring容器中。步骤5:编写spring.handlers和spring.schemas文件,默认位置......
  • drf——自定义权限
    第一步:创建自定义权限首先,需要创建自定义权限类以实现企业黑名单功能。在你的permissions.py文件中创建一个新的类,例如:fromrest_frameworkimportpermissionsclassBlacklistPermission(permissions.BasePermission):message='Youraccounthasbeenblacklisted.'......
  • pytest + yaml 框架 -29.模板过滤器语法与自定义过滤器使用
    前言v1.2.6版本支持模板过滤器语法的使用,并且可以自定义过滤器了。针对有同学提到上个接口返回一个id值,下个接口引用变量的时候需要根据这个值做一些运算,比如在引用的结果加1.jinja2是可以支持模板过滤器语法的,本篇介绍下模板过滤器的相关使用.v1.2.6版本主要更新以下几点1......
  • Qt编写视频监控系统74-悬浮工具栏(半透明/上下左右位置/自定义按钮)
    一、前言在监控系统中一般在视频实时预览的时候,希望提供一个悬浮工具条,可以显示一些提示信息比如分辨率、码率、帧率,提供一堆快捷操作按钮,可以录像、抓拍、云台控制、关闭等操作,参考了国内很多监控厂商客户端软件,总结下来基本就是悬浮条可以半透明悬浮在通道窗体上,也有少部分是固......
  • .Net6自定义拦截器
    .Net6自定义拦截器拦截器是Aop(面向切面编程)的思想指的是不改变原代码封装的前提下去实现更多功能这里通过.net的特性(给一个目标对象添加一段配置信息)的方式去实现拦截器功能新建一个特性namespaceCorePolly{publicclassTestAttribute:Attribute{publ......
  • goframe API 自定义接口返回值处理
    前言goframe默认使用了中间键ghttp.MiddlewareHandlerResponse,HTTPServer的数据返回通过ghttp.Response对象实现,ghttp.Response对象实现了标准库的http.ResponseWriter接口。数据输出使用Write*相关方法实现,并且数据输出采用了Buffer机制,因此数据的处理效率比较高......
  • 一个基础的vue图片放大镜自定义指令
    <template> <div>  <divv-magnifyref="content"class="content">   <imgsrc="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"alt="">  </div> </d......
  • 记Perfeye自定义项实现对比需求
    记Perfeye自定义项实现对比需求背景Perfyeye平台很早就支持对比功能了,但是支持的模块不全,需求方现在想要支持自定义列的需求对比功能,用来显示多份报告之间的差异以及性能趋势。刚接到这个需求的时候,我想,这不就是简简单单CV复制一下老代码的逻辑,改改相应字段就可以了,30分钟也......
  • useRef 与 createRef 的区别
    两者区别:createRef每次渲染都会返回一个新的引用,而useRef每次都会返回相同的引用。useRef一般用于函数组件useRef不仅仅是用来管理DOMref的,它还相当于this,可以存放任何变量.当useRef的内容发生变化时,它不会通知您。更改.current属性不会导致组件重新渲染。因为......