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
- 安装 django-db-comments
- 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】,刷新数据库即可
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