From 13d565b06813e40352b5fcd1332b143418fd628e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E7=91=9E=E8=90=8D?= <1909818175@qq.com> Date: Mon, 13 Oct 2025 08:48:53 +0800 Subject: [PATCH] =?UTF-8?q?merge=20develop=20&=20=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comments/migrations/0001_initial.py | 90 ++++++++++++++----- .../0002_alter_comment_is_enable.py | 23 ++++- ...ns_remove_comment_created_time_and_more.py | 57 +++++++++--- 3 files changed, 134 insertions(+), 36 deletions(-) diff --git a/comments/migrations/0001_initial.py b/comments/migrations/0001_initial.py index 61d1e53..5199831 100644 --- a/comments/migrations/0001_initial.py +++ b/comments/migrations/0001_initial.py @@ -1,38 +1,88 @@ # Generated by Django 4.1.7 on 2023-03-02 07:14 +# 以上注释为Django自动生成,显示生成该迁移文件的Django版本和时间 -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone +# 导入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'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('blog', '0001_initial'), # 依赖blog应用的0001_initial迁移,确保Article模型已存在 + migrations.swappable_dependency(settings.AUTH_USER_MODEL), # 依赖用户模型的迁移 ] + # 具体的数据库操作列表 operations = [ + # 创建Comment模型(对应数据库表) migrations.CreateModel( - name='Comment', + 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='上级评论')), + # 主键字段,自动增长的大整数类型 + ('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'], - 'get_latest_by': 'id', + 'verbose_name': '评论', # 模型的单数显示名称 + 'verbose_name_plural': '评论', # 模型的复数显示名称(中文单复数相同) + 'ordering': ['-id'], # 默认排序方式:按id倒序(新评论在前) + 'get_latest_by': 'id', # 使用latest()方法时按id字段判断最新 }, ), - ] + ] \ No newline at end of file diff --git a/comments/migrations/0002_alter_comment_is_enable.py b/comments/migrations/0002_alter_comment_is_enable.py index 17c44db..29a22cc 100644 --- a/comments/migrations/0002_alter_comment_is_enable.py +++ b/comments/migrations/0002_alter_comment_is_enable.py @@ -1,18 +1,33 @@ # Generated by Django 4.1.7 on 2023-04-24 13:48 +# 以上为Django自动生成的注释,表明该迁移文件由Django 4.1.7版本在2023-04-24生成 +# 导入Django数据库迁移相关模块 from django.db import migrations, models class Migration(migrations.Migration): + """ + 迁移类,用于修改评论模型的字段属性 + 这是一个修改性迁移,而非初始创建迁移 + """ + # 依赖关系:必须在comments应用的0001_initial迁移之后执行 + # 确保先有Comment模型,才能对其进行修改 dependencies = [ ('comments', '0001_initial'), ] + # 具体的数据库操作 operations = [ + # 修改Comment模型的is_enable字段属性 migrations.AlterField( - model_name='comment', - name='is_enable', - field=models.BooleanField(default=False, verbose_name='是否显示'), + model_name='comment', # 要修改的模型名称 + name='is_enable', # 要修改的字段名称 + + # 修改后的字段定义 + field=models.BooleanField( + default=False, # 关键变更:默认值从True改为False + verbose_name='是否显示' # 保持字段的后台显示名称不变 + ), ), - ] + ] \ No newline at end of file diff --git a/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py b/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py index a1ca970..45fe48e 100644 --- a/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py +++ b/comments/migrations/0003_alter_comment_options_remove_comment_created_time_and_more.py @@ -1,60 +1,93 @@ # Generated by Django 4.2.5 on 2023-09-06 13:13 +# Django自动生成的注释,显示生成该迁移文件的Django版本和时间 -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 # 用于获取用户模型配置 +from django.db import migrations, models # 数据库迁移和模型字段相关 +import django.db.models.deletion # 外键删除行为定义 +import django.utils.timezone # 时间处理工具 class Migration(migrations.Migration): + """ + 这是一个对Comment模型进行多方面修改的迁移类 + 主要涉及字段重命名、 verbose_name 国际化调整等 + """ + # 依赖关系:指定了执行此迁移前需要先完成的迁移 dependencies = [ + # 依赖用户模型的迁移 migrations.swappable_dependency(settings.AUTH_USER_MODEL), + # 依赖blog应用的特定迁移版本 ('blog', '0005_alter_article_options_alter_category_options_and_more'), + # 依赖comments应用的上一个迁移版本 ('comments', '0002_alter_comment_is_enable'), ] + # 具体的数据库操作列表 operations = [ + # 修改Comment模型的元数据选项 migrations.AlterModelOptions( - name='comment', - options={'get_latest_by': 'id', 'ordering': ['-id'], 'verbose_name': 'comment', 'verbose_name_plural': 'comment'}, + name='comment', # 目标模型 + # 将verbose_name从中文"评论"改为英文"comment",实现国际化调整 + options={'get_latest_by': 'id', 'ordering': ['-id'], + 'verbose_name': 'comment', 'verbose_name_plural': 'comment'}, ), + + # 删除原有的创建时间字段 migrations.RemoveField( model_name='comment', name='created_time', ), + + # 删除原有的最后修改时间字段 migrations.RemoveField( model_name='comment', name='last_mod_time', ), + + # 添加新的创建时间字段(字段名变更) migrations.AddField( model_name='comment', - name='creation_time', + name='creation_time', # 新字段名(从created_time改为creation_time) field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='creation time'), ), + + # 添加新的最后修改时间字段(字段名变更) migrations.AddField( model_name='comment', - name='last_modify_time', + name='last_modify_time', # 新字段名(从last_mod_time改为last_modify_time) field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='last modify time'), ), + + # 修改article外键字段的verbose_name(从中文改为英文) migrations.AlterField( model_name='comment', name='article', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', verbose_name='article'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.article', + verbose_name='article'), ), + + # 修改author外键字段的verbose_name(从中文改为英文) migrations.AlterField( model_name='comment', name='author', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='author'), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, + verbose_name='author'), ), + + # 修改is_enable字段的verbose_name(从"是否显示"改为"enable") migrations.AlterField( model_name='comment', name='is_enable', field=models.BooleanField(default=False, verbose_name='enable'), ), + + # 修改parent_comment外键字段的verbose_name(从中文改为英文) migrations.AlterField( model_name='comment', name='parent_comment', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comments.comment', verbose_name='parent comment'), + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, + to='comments.comment', verbose_name='parent comment'), ), - ] + ] \ No newline at end of file -- 2.34.1