Django3.2 扩展用户模型
1.创建Django项目
django-admin startproject examrev3
2. 创建app
python manage.py startapp account
python manage.py startapp student
3. 扩展用户模型
account 应用 models.py 中创建自定义用户类MyUser并继承AbstractUser
from django.db import models
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
identity_choices = (
(u'S', u'学生'),
(u'M', u'报考管理员'),
(u'C', u'班主任'),
)
person_id = models.CharField(verbose_name="身份证号码", max_length=18, unique=True)
student_id = models.CharField(verbose_name="学籍号码", max_length=19, unique=True)
identity = models.CharField(verbose_name='用户身份', max_length=2, choices=identity_choices)
class Meta(AbstractUser.Meta):
pass
4. 项目settings中配置
AUTH_USER_MODEL = 'account.Myuser'
在其他模型类中需要关联用户模型,需要做如下配置实现关联用户表。
to=settings.AUTH_USER_MODEL
class StudentInfo(models.Model):
# 考生信息
student_user = models.ForeignKey(verbose_name="用户", to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
student_name = models.CharField(verbose_name='考生姓名', max_length=64, help_text='姓名必须与户口本一致,姓名中的圆点请使用·')
id_type = models.IntegerField(verbose_name='证件类型', choices=id_type_choices, default=1)
per_id = models.CharField(verbose_name='证件号码', max_length=18, unique=True)
...
5. 配置admin.py
from django.contrib import admin
from account import models
# Register your models here.
admin.site.register(models.MyUser)
6. 数据库迁移
python manage.py makemigrations
python manage.py migrate
7. 扩展完成后的用户表
可以创建超级用户并完成登录。
Django解决扩展用户表时,后台Admin显示密码为明文的问题
https://blog.csdn.net/qq_42164596/article/details/104392262