|
|
"""
|
|
|
用户账户应用数据库迁移文件
|
|
|
|
|
|
本迁移文件由Django自动生成,用于创建自定义用户模型的数据库表结构。
|
|
|
扩展了Django内置的AbstractUser模型,添加了博客系统特有的用户字段。
|
|
|
|
|
|
生成的表结构:
|
|
|
- accounts_bloguser: 自定义博客用户表,继承Django用户认证系统的所有功能
|
|
|
|
|
|
迁移依赖:
|
|
|
- 依赖于Django auth应用的group和permission模型
|
|
|
"""
|
|
|
|
|
|
# Generated by Django 4.1.7 on 2023-03-02 07:14
|
|
|
|
|
|
import django.contrib.auth.models
|
|
|
import django.contrib.auth.validators
|
|
|
from django.db import migrations, models
|
|
|
import django.utils.timezone
|
|
|
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
"""
|
|
|
用户账户应用初始迁移类
|
|
|
|
|
|
继承自migrations.Migration,定义自定义用户模型的数据库表创建操作。
|
|
|
initial = True 表示这是该应用的第一个迁移文件。
|
|
|
|
|
|
主要功能:
|
|
|
- 创建自定义用户模型BlogUser的数据库表
|
|
|
- 继承Django认证系统的所有基础字段
|
|
|
- 添加博客系统特有的自定义字段
|
|
|
- 设置模型的管理器和配置选项
|
|
|
"""
|
|
|
|
|
|
# 标记为初始迁移文件,Django迁移系统会首先执行此文件
|
|
|
initial = True
|
|
|
|
|
|
# 定义迁移依赖关系
|
|
|
dependencies = [
|
|
|
# 声明对Django认证系统组的依赖
|
|
|
# 使用auth应用的0012迁移文件,确保用户权限系统正常工作
|
|
|
('auth', '0012_alter_user_first_name_max_length'),
|
|
|
]
|
|
|
|
|
|
# 定义迁移操作序列
|
|
|
operations = [
|
|
|
# 创建博客用户表的迁移操作
|
|
|
migrations.CreateModel(
|
|
|
# 模型名称 - 对应数据库表名 accounts_bloguser
|
|
|
name='BlogUser',
|
|
|
# 定义模型字段列表
|
|
|
fields=[
|
|
|
# 主键字段 - 使用BigAutoField作为自增主键
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
|
|
|
|
# 密码字段 - Django认证系统标准字段,存储加密后的密码
|
|
|
('password', models.CharField(max_length=128, verbose_name='password')),
|
|
|
|
|
|
# 最后登录时间字段 - 记录用户最后一次登录的时间
|
|
|
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
|
|
|
|
|
|
# 超级用户标志字段 - 标识用户是否拥有所有权限
|
|
|
('is_superuser', models.BooleanField(default=False,
|
|
|
help_text='Designates that this user has all permissions without explicitly assigning them.',
|
|
|
verbose_name='superuser status')),
|
|
|
|
|
|
# 用户名字段 - 唯一标识用户的字段,包含验证器和错误消息
|
|
|
('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'},
|
|
|
help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.',
|
|
|
max_length=150, unique=True,
|
|
|
validators=[django.contrib.auth.validators.UnicodeUsernameValidator()],
|
|
|
verbose_name='username')),
|
|
|
|
|
|
# 名字字段 - 用户的名字(西方命名习惯)
|
|
|
('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')),
|
|
|
|
|
|
# 姓氏字段 - 用户的姓氏(西方命名习惯)
|
|
|
('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')),
|
|
|
|
|
|
# 邮箱字段 - 用户的电子邮箱地址
|
|
|
('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')),
|
|
|
|
|
|
# 员工状态字段 - 标识用户是否可以登录管理后台
|
|
|
('is_staff', models.BooleanField(default=False,
|
|
|
help_text='Designates whether the user can log into this admin site.',
|
|
|
verbose_name='staff status')),
|
|
|
|
|
|
# 活跃状态字段 - 标识用户账号是否激活(软删除机制)
|
|
|
('is_active', models.BooleanField(default=True,
|
|
|
help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.',
|
|
|
verbose_name='active')),
|
|
|
|
|
|
# 注册时间字段 - 记录用户账号创建的时间
|
|
|
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
|
|
|
|
|
|
# 昵称字段 - 博客系统自定义字段,用户显示名称
|
|
|
('nickname', models.CharField(blank=True, max_length=100, verbose_name='昵称')),
|
|
|
|
|
|
# 创建时间字段 - 博客系统自定义字段,记录创建时间
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
|
|
|
|
|
# 最后修改时间字段 - 博客系统自定义字段,记录最后修改时间
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')),
|
|
|
|
|
|
# 来源字段 - 博客系统自定义字段,记录用户创建来源(如注册、OAuth等)
|
|
|
('source', models.CharField(blank=True, max_length=100, verbose_name='创建来源')),
|
|
|
|
|
|
# 组关联字段 - Django权限系统的组多对多关联
|
|
|
('groups', models.ManyToManyField(blank=True,
|
|
|
help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.',
|
|
|
related_name='user_set', related_query_name='user', to='auth.group',
|
|
|
verbose_name='groups')),
|
|
|
|
|
|
# 权限关联字段 - Django权限系统的用户权限多对多关联
|
|
|
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.',
|
|
|
related_name='user_set', related_query_name='user',
|
|
|
to='auth.permission', verbose_name='user permissions')),
|
|
|
],
|
|
|
# 模型元数据配置
|
|
|
options={
|
|
|
# 管理后台单数显示名称(中文)
|
|
|
'verbose_name': '用户',
|
|
|
# 管理后台复数显示名称(中文)
|
|
|
'verbose_name_plural': '用户',
|
|
|
# 默认排序规则 - 按ID倒序排列(最新的记录在前)
|
|
|
'ordering': ['-id'],
|
|
|
# 指定获取最新记录的字段 - 使用id字段确定最新记录
|
|
|
'get_latest_by': 'id',
|
|
|
},
|
|
|
# 定义模型管理器
|
|
|
managers=[
|
|
|
# 使用Django内置的UserManager管理用户对象
|
|
|
# 提供create_user、create_superuser等用户管理方法
|
|
|
('objects', django.contrib.auth.models.UserManager()),
|
|
|
],
|
|
|
),
|
|
|
] |