Django扩展用户中心

行云流水
2023-04-21 / 0 评论 / 151 阅读 / 正在检测是否收录...

前言

利用Django开发的小项目,想扩展默认的user表,添加一些自定义字段。记录这个过程。

创建应用

python manage.py startapp users

注册

修改settings.py
INSTALLED_APPS = [
    'simpleui',  #放到第一行
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'users',
]

自定义字段

models.py

在users文件夹下的models.py中定义扩展字段
from django.db import models

# Create your models here.
from django.contrib.auth.models import User

#用户类
class UserProfile(models.Model):
    """
    用户类扩展字段
    """
    owner = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name = '用户')
    nike_name = models.CharField('昵称', max_length=50, blank=True, default='')
    privtekey = models.DateField('密钥', null=True, blank=True)

    class Meta:
        verbose_name = '用户资料'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.owner.username

admin.py

修改后台展示
from django.contrib import admin

# 首先引入User
from django.contrib.auth.models import User
# 我们看到的这个用户选项就是官方默认通过UserAdmin这个类注册到后台的,那么我们也引入进来,后边继承这个类
from django.contrib.auth.admin import UserAdmin
# 再引入我们定义的模型
from .models import UserProfile
# 必须先通过unregister将User取消注册
admin.site.unregister(User)

# 定义关联对象的样式,StackedInline为纵向排列每一行,TabularInline为并排排列
class UserProfileInline(admin.StackedInline):
    model = UserProfile   # 关联的模型

# 关联字段在User之内编辑,关联进来
class UserProfileAdmin(UserAdmin):
    inlines = [UserProfileInline]

# 重新注册User
admin.site.register(User, UserProfileAdmin)

跟新

python manage.py makemigrations
python manage.py  migrate

评论 (0)

取消
只有登录/注册用户才可评论