第五周个人实践任务 #7

Merged
pwe53ixz6 merged 1 commits from zrp_branch into develop 4 months ago

@ -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字段判断最新
},
),
]
]

@ -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='是否显示' # 保持字段的后台显示名称不变
),
),
]
]

@ -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'),
),
]
]
Loading…
Cancel
Save