|
|
|
|
@ -1,38 +1,37 @@
|
|
|
|
|
# Generated by Django 4.1.7 on 2023-03-02 07:14
|
|
|
|
|
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
from django.db import migrations, models
|
|
|
|
|
import django.db.models.deletion
|
|
|
|
|
import django.utils.timezone
|
|
|
|
|
from django.conf import settings # gst: 导入Django项目配置(包含用户模型等核心配置)
|
|
|
|
|
from django.db import migrations, models # gst: 导入数据库迁移与模型字段相关模块
|
|
|
|
|
import django.db.models.deletion # gst: 导入外键删除行为处理模块
|
|
|
|
|
import django.utils.timezone # gst: 导入Django时区工具(用于时间字段默认值)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
|
class Migration(migrations.Migration): # gst: 定义迁移类,管理数据库模型的迁移操作
|
|
|
|
|
initial = True # gst: 标记为初始迁移(首次创建该模型的迁移)
|
|
|
|
|
|
|
|
|
|
initial = True
|
|
|
|
|
|
|
|
|
|
dependencies = [
|
|
|
|
|
('blog', '0001_initial'),
|
|
|
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
|
|
|
dependencies = [ # gst: 迁移依赖项,指定执行当前迁移前需完成的其他迁移
|
|
|
|
|
('blog', '0001_initial'), # gst: 依赖blog应用的0001号初始迁移(确保Article模型已存在)
|
|
|
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL), # gst: 依赖可替换的用户模型(支持自定义用户扩展)
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
operations = [
|
|
|
|
|
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', 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, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='上级评论')),
|
|
|
|
|
operations = [ # gst: 迁移操作列表,定义当前迁移要执行的数据库操作
|
|
|
|
|
migrations.CreateModel( # gst: 执行“创建模型”的迁移操作
|
|
|
|
|
name='Comment', # gst: 模型名称(对应数据库表:comments_comment)
|
|
|
|
|
fields=[ # gst: 模型字段定义集合
|
|
|
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), # gst: 自增主键字段,适用于大数据量场景
|
|
|
|
|
('body', models.TextField(max_length=300, verbose_name='正文')), # gst: 评论正文字段,文本类型且限制最大长度300,后台显示“正文”
|
|
|
|
|
('created_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')), # gst: 创建时间字段,默认值为当前时区时间,后台显示“创建时间”
|
|
|
|
|
('last_mod_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), # gst: 修改时间字段,默认值为当前时区时间,后台显示“修改时间”
|
|
|
|
|
('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), # gst: 布尔字段,控制评论是否显示(默认显示),后台显示“是否显示”
|
|
|
|
|
('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='文章')), # gst: 外键关联blog应用的Article模型,删除文章时级联删除评论,后台显示“文章”
|
|
|
|
|
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), # gst: 外键关联用户模型,删除用户时级联删除评论,后台显示“作者”
|
|
|
|
|
('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='上级评论')), # gst: 自关联外键(支持评论回复),允许为空,删除上级评论时级联删除子评论,后台显示“上级评论”
|
|
|
|
|
],
|
|
|
|
|
options={
|
|
|
|
|
'verbose_name': '评论',
|
|
|
|
|
'verbose_name_plural': '评论',
|
|
|
|
|
'ordering': ['-id'],
|
|
|
|
|
'get_latest_by': 'id',
|
|
|
|
|
options={ # gst: 模型额外配置项
|
|
|
|
|
'verbose_name': '评论', # gst: 后台管理中模型的单数显示名称
|
|
|
|
|
'verbose_name_plural': '评论', # gst: 后台管理中模型的复数显示名称
|
|
|
|
|
'ordering': ['-id'], # gst: 数据查询默认排序(按主键倒序,最新评论在前)
|
|
|
|
|
'get_latest_by': 'id', # gst: 调用latest()方法时按id字段获取最新记录
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
]
|
|
|
|
|
|