迁移是 Django 将对模型model的修改(例如增加一个字段,删除一个模型)应用至数据库架构中的方式。
makemigrations:生成移行文件
(env) PS D:\Projects\pj> python .\manage.py makemigrations #执行对象:pj全体(包括自带的 user permission等)
(env) PS D:\Projects\pj> python .\manage.py makemigrations parentAppName # 单独指定app
(env) PS D:\Projects\pj> python .\manage.py makemigrations childrenAppName # 单独指定app
(env) PS D:\Projects\pj> python .\manage.py migrate # 已生成的移行文件,反映到数据库
生成的移行文件,在各app下的·migrations文件夹下,例:app:master
移行后的数据库表,没有表名,和列名的注释
django model field comment in database
可以将model中定义的 【verbose_name】,【 help_text】添加到数据库表/列的伦理名。
伦理名= verbose_name | help_text
(smsenv) PS D:\Projects\pj> pip install django-db-comments
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定义参照
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】
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】
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。