django-db-comments: model移行时自动生成 table,column逻辑名称

2022-07-30 00:02:22 浏览数 (1)

Django migrate

迁移是 Django 将对模型model的修改(例如增加一个字段,删除一个模型)应用至数据库架构中的方式。

  • 生成移行文件时,自动差分。
  • 有参照关系的app,需先生成【父app】的移行文件,再生成【子app】

具体执行命令如下:

代码语言:python代码运行次数:0复制
makemigrations:生成移行文件
(env) PS D:Projectspj> python .manage.py makemigrations  #执行对象:pj全体(包括自带的 user permission等)
(env) PS D:Projectspj> python .manage.py makemigrations parentAppName   # 单独指定app
(env) PS D:Projectspj> python .manage.py makemigrations childrenAppName # 单独指定app
(env) PS D:Projectspj> python .manage.py migrate # 已生成的移行文件,反映到数据库

生成的移行文件,在各app下的·migrations文件夹下,例:app:master

移行文件反映成功的话,存储在Django_migrations表中

移行后的数据库表,没有表名,和列名的注释

共通表部分共通表部分

django-db-comments:model移行时,自动作成伦理名(model コラム 論理名・コメント)

django model field comment in database

可以将model中定义的 【verbose_name】,【 help_text】添加到数据库表/列的伦理名。

伦理名= verbose_name | help_text

  1. 安装 django-db-comments
  2. settings.py INSTALLED_APPS中追加 django-db-comments

安装 django-db-comments

代码语言:javascript复制
(smsenv) PS D:Projectspj> pip install django-db-comments   

settings.py INSTALLED_APPS中追加 django-db-comments

代码语言:python代码运行次数:0复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_db_comments',       # 追加
    ... ...
]

再重新执行移行命令【makemigrations , migrate】,刷新数据库即可

table名,column名table名,column名

model定义参照

代码语言:javascript复制
class BaseModel(models.Model):
    locked     = models.BooleanField(default=False, verbose_name='ロックフラグ')
    locked_by  = models.CharField(default='', max_length=200, verbose_name='ロック者')
    deleted    = models.BooleanField(default=False, verbose_name='削除フラグ')
    deleted_by = models.CharField(default="", max_length=200, verbose_name='削除者')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='登録日時')
    updated_at = models.DateTimeField(auto_now=True, verbose_name='更新日時')
    created_by = models.CharField(default="", max_length=200, verbose_name='登録者')
    updated_by = models.CharField(default="", max_length=200, verbose_name='更新者')

伦理名= verbose_name | help_text 例

补充:

差分移行error过多时,可选择重新作成数据库。 ※注意:差分移行时,表中数据可以保留。

数据库重新作成时:

1,可执行以下SQL,将数据库内容其全部清空【postgre】

代码语言:javascript复制
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;
GRANT ALL ON SCHEMA public TO postgres;
GRANT ALL ON SCHEMA public TO public;

2,将已生成的移行文件,全部删除(各app下的【migrations】文件夹整体删除即可)

3,重新执行【makemigrations, migrate】

pyPI django-db-comments

Django migrations

0 人点赞