Django Migration (New in Django 1.7)

更新日期: 2017-06-15 阅读次数: 3537 分类: Django

Django 1.7 引入了 migration 的概念,用于方便的处理 model 中增加字段、删除字段 等造成的数据库改表问题。

为何要整理这篇笔记

使用了 Django 1.7 之后,发现将一个字段由 SlugField 修改成 CharField 之后, SlugField 对应的 index 并没有被删除掉。所以,需要确认一下,在什么情况下可以使 用 migration,什么情况下不可以使用。

migration 设计到的命令

  • python manage.py makemigrations
    • 用于生成 migration 文件
  • python manage.py migrate
    • 执行或撤销 migration, 并列出状态
  • python manage.py sqlmigrate
    • 对应的 SQL 操作

不同数据库对 migration 的支持、与实现大不相同

PostgreSQL > MySQL > SQLite

因为 SQLite 本身对 schema alteration 的支持就不够。通常是创建一个新表,数据迁 移过来,再删旧表。

修改字段属性是否能被 detect 到

增加、删除字段貌似是没问题的,但是修改字段属性做的貌似不好。所以一定要认真读取 SQL.

"Your models will be scanned and compared to the versions currently contained in your migration files, and then a new set of migrations will be written out. Make sure to read the output to see what makemigrations thinks you have changed - it’s not perfect, and for complex changes it might not be detecting what you expect."

参考文档

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2020年02月28日 世界居住条件调查日
2020年03月01日 国际海豹日
2020年03月03日 全国爱耳日
2020年03月05日 学雷锋日
2020年03月05日 惊蛰
2020年03月08日 三八妇女节
2020年03月12日 植树节
2020年03月14日 白色情人节
2020年03月15日 消费者权益日
2020年03月17日 国际航海日
2020年03月20日 世界无肉日
2020年03月20日 春分
查看更多节日