⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Django自定义User模型

学习如何用AbstractUser扩展Django默认用户模型,添加自定义字段。 · 难度:入门 · +15XP

为什么需要自定义User

Django自带的User模型包含username、email、password等字段。但实际项目可能需要手机号、头像、生日等额外字段。官方推荐在项目初期就使用自定义User模型。

方法一:继承AbstractUser

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    phone = models.CharField(max_length=15, unique=True)
    avatar = models.ImageField(upload_to='avatars/', blank=True)
    birth_date = models.DateField(null=True, blank=True)
    # 可以添加自定义方法
    def get_full_name(self):
        return f"{self.first_name} {self.last_name}"

settings配置

AUTH_USER_MODEL = 'myapp.CustomUser'

必须在第一次迁移之前设置。

Admin注册

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    fieldsets = UserAdmin.fieldsets + (
        (None, {'fields': ('phone', 'avatar', 'birth_date')}),
    )

admin.site.register(CustomUser, CustomUserAdmin)
方法说明
AbstractUser保留默认字段,可扩展
AbstractBaseUser完全自定义,需要更多工作量

练习提示: 修改starter_code中的模型,继承AbstractUser并添加bio字段。在admin.py中注册并显示该字段。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0