You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中auth.models.User与自定义抽象User模型有何区别?

两种User模型的核心差异对比

1. Django内置User模型(django.contrib.auth.models.User)

  • 是Django官方预制的完整数据库模型,直接对应数据库中的auth_user表,自带用户名、密码、邮箱、姓名、权限状态等基础字段
  • 无需额外配置就能用于用户认证、登录等功能,适合快速搭建简单项目
  • 扩展性有限:要加自定义字段(如手机号、头像)只能通过OneToOneField关联额外模型,官方不建议直接修改内置模型结构

2. 自定义抽象User模型(.models中定义的抽象模型)

  • 是继承AbstractUser或AbstractBaseUser创建的抽象基类,本身不会生成数据库表,仅作为自定义用户模型的模板
  • 可完全自定义字段(比如将手机号设为登录标识、增加性别/生日字段),完美适配业务需求
  • 必须在项目settings.py中配置AUTH_USER_MODEL = "你的应用名.自定义模型名",才能让Django认证系统替换为该模型

导入注意事项

  • 如果项目已经配置了自定义用户模型,却硬编码导入django.contrib.auth.models.User,会导致操作的是内置模型,和实际数据库的用户表不匹配,引发数据异常
  • 推荐统一使用from django.contrib.auth import get_user_model动态获取当前系统的用户模型,避免硬编码路径的问题

内容的提问来源于stack exchange,提问作者static-man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:48:21