Django 自定义用户模型:继承 AbstractUser 实现扩展与配置

顾星河
顾星河
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍如何在 Django 中通过继承 AbstractUser 类来扩展用户模型。内容涵盖在 models.py 中定义自定义字段(如昵称、生日、头像等),在 settings.py 中配置 AUTH_USER_MODEL 指向新模型,以及处理邮件类型等枚举选项。通过具体代码示例,帮助开发者实现灵活的用户信息管理。

引入 AbstractUser 基类

首先,需要在 models 模块中引入 Django 内置的用户抽象基类。具体操作是导入 AbstractUser,这是后续自定义用户模型的基础。


from django.contrib.auth.models import AbstractUser

自定义用户模型类定义

接下来,定义一个继承自 AbstractUser 的自定义用户模型类。该类允许我们添加额外的用户属性,同时保留 Django 默认用户的所有功能。


class UsersModels(AbstractUser):
  nick_name = models.CharField(max_length=20, verbose_name='昵称')
  birday = models.DateField(verbose_name='生日', null=True, blank=True)
  address = models.CharField(max_length=50, verbose_name='地址', default='')
  mobile = models.CharField(max_length=11, verbose_name='手机', default='')
  image = models.ImageField(upload_to='images/%Y/%m', default='images/default.png', verbose_name='头像')
  sex = models.CharField(max_length=10, default='',verbose_name='性别')
  age=models.CharField(max_length=5,default='',verbose_name='年龄')
 
  class Meta:
    db_table = 'user'
    verbose_name = '用户信息'
    verbose_name_plural = verbose_name

在定义字段时,verbose_name 参数用于指定该字段在 Django 后台管理界面中显示的名称,以提升可读性和用户体验。

Settings 配置与模型注册

完成模型定义后,必须在 settings 配置文件中进行关键配置。需要设置 AUTH_USER_MODEL 参数,将其指向自定义的用户模型类路径,格式通常为 'app名称.模型类名',以确保 Django 系统正确使用新的用户模型。


# 配置使用到的用户模型类
AUTH_USER_MODEL = 'register.UserProfile'  #register 指的是app名称

相关模型字段处理示例

此外,在实际开发中可能还需要处理其他相关模型,例如邮件发送记录。这通常涉及定义枚举类型的字段,如 send_type 用于区分邮件用途(注册或找回密码),以及 status 布尔字段来标记邮件是否已被使用。这些字段同样需要正确配置 verbose_name 和默认值。


# choices 枚举选项 ,必须从指定的项中选择一个
  send_type = models.CharField(choices=(('register', '注册邮件'), ('forget', '找回密码')), max_length=10, verbose_name='邮件类型')
  # 邮件使用状态
  status = models.BooleanField(choices=((True, '已使用'), (False, '未使用')), verbose_name='邮件状态', default=False)

以上即为 Django 继承并重写自带 user 表的完整示例。通过上述步骤,您可以灵活扩展用户信息以满足业务需求。希望这些内容能为您提供参考,欢迎持续关注以获取更多技术分享。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。