|
|
# Generated by Django 4.1.7 on 2023-03-02 07:14
|
|
|
# 以上注释为Django自动生成,显示生成该迁移文件的Django版本和时间
|
|
|
|
|
|
# 导入Django必要的模块
|
|
|
from django.conf import settings # 用于获取项目设置,特别是用户模型配置
|
|
|
from django.db import migrations, models # 数据库迁移和模型字段相关模块
|
|
|
import django.db.models.deletion # 用于定义外键删除行为
|
|
|
import django.utils.timezone # 用于处理时间相关字段
|
|
|
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
"""
|
|
|
迁移类,定义数据库结构变更的具体操作
|
|
|
每个迁移文件对应一个Migration类
|
|
|
"""
|
|
|
|
|
|
# 标记为初始迁移(第一次创建该模型的迁移)
|
|
|
initial = True
|
|
|
|
|
|
# 依赖的其他迁移文件,确保执行顺序正确
|
|
|
dependencies = [
|
|
|
('blog', '0001_initial'), # 依赖blog应用的0001_initial迁移,确保Article模型已存在
|
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), # 依赖用户模型的迁移
|
|
|
]
|
|
|
|
|
|
# 具体的数据库操作列表
|
|
|
operations = [
|
|
|
# 创建Comment模型(对应数据库表)
|
|
|
migrations.CreateModel(
|
|
|
name='Comment', # 模型名称
|
|
|
fields=[
|
|
|
# 主键字段,自动增长的大整数类型
|
|
|
('id', models.BigAutoField(
|
|
|
auto_created=True, # 自动创建
|
|
|
primary_key=True, # 设为主键
|
|
|
serialize=False, # 不序列化
|
|
|
verbose_name='ID' # 后台显示名称
|
|
|
)),
|
|
|
# 评论正文字段
|
|
|
('body', models.TextField(
|
|
|
max_length=300, # 最大长度限制
|
|
|
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='修改时间' # 后台显示名称
|
|
|
)),
|
|
|
# 评论是否显示的状态字段
|
|
|
('is_enable', models.BooleanField(
|
|
|
default=True, # 默认显示
|
|
|
verbose_name='是否显示' # 后台显示名称
|
|
|
)),
|
|
|
# 外键关联到文章模型
|
|
|
('article', models.ForeignKey(
|
|
|
on_delete=django.db.models.deletion.CASCADE, # 文章删除时,关联评论也删除
|
|
|
to='blog.article', # 关联到blog应用的Article模型
|
|
|
verbose_name='文章' # 后台显示名称
|
|
|
)),
|
|
|
# 外键关联到用户模型
|
|
|
('author', models.ForeignKey(
|
|
|
on_delete=django.db.models.deletion.CASCADE, # 用户删除时,关联评论也删除
|
|
|
to=settings.AUTH_USER_MODEL, # 关联到项目配置的用户模型
|
|
|
verbose_name='作者' # 后台显示名称
|
|
|
)),
|
|
|
# 外键关联到自身,实现评论嵌套(回复功能)
|
|
|
('parent_comment', models.ForeignKey(
|
|
|
blank=True, # 允许为空
|
|
|
null=True, # 数据库中允许为NULL
|
|
|
on_delete=django.db.models.deletion.CASCADE, # 上级评论删除时,子评论也删除
|
|
|
to='comments.comment', # 关联到当前应用的Comment模型
|
|
|
verbose_name='上级评论' # 后台显示名称
|
|
|
)),
|
|
|
],
|
|
|
# 模型的元数据配置
|
|
|
options={
|
|
|
'verbose_name': '评论', # 模型的单数显示名称
|
|
|
'verbose_name_plural': '评论', # 模型的复数显示名称(中文单复数相同)
|
|
|
'ordering': ['-id'], # 默认排序方式:按id倒序(新评论在前)
|
|
|
'get_latest_by': 'id', # 使用latest()方法时按id字段判断最新
|
|
|
},
|
|
|
),
|
|
|
] |