You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DjangoBlog/comments/migrations/0001_initial.py

88 lines
4.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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