【问题标题】:South - Migrate PyPI packageSouth - 迁移 PyPI 包
【发布时间】:2013-12-29 11:46:11
【问题描述】:

当我安装一个新包时,让我们说

(myenv) $ pip install django-avatar

在我的项目中添加后

INSTALLED_APPS = (
    #...
    'avatar',
)

当我使用 South 时,我想将迁移添加到我的项目中

(myenv) $ python manage.py schemamigration avatar --initial

+ 添加了模型头像.头像
创建 0001_initial.py。您现在可以通过以下方式应用此迁移:./manage.py migrate avatar

现在 git 告诉我,我的项目没有任何变化

这个迁移文件在哪里?
如何部署它?

【问题讨论】:

标签: django git virtualenv pip django-south


【解决方案1】:

在您运行该命令后,接着是./manage.py migrate avatar,迁移将被写入/migrations/0001_initial.py 和您数据库中的一个表。对于 MySQL,它是 south_migrationhistory

至于部署,我的偏好是在生产环境中运行南schemamigrationmigrate 命令。并保持本地 migrations 目录停止生产。

我这样做是因为我通常在开发中执行更多迁移,并且(无论如何,直到 1.7)该目录可能会变得相当笨重。

【讨论】:

  • 感谢您的清晰解释,因为我的迁移文件通常位于每个应用程序文件夹中,但我对 virtualenv 应用程序也是如此。 +1 制作提示
  • 顺便说一下,仅在生产环境中迁移,这不会阻止您选择您可能希望安装的项目的任何版本吗?
  • 实际上我没有看到 migrations/ 中的迁移,请参阅我更新的问题
  • 您不能真正使用迁移文件进行还原。问题是您的模型需要匹配您的数据库。这就是为什么在 .gitignore 中有 /migrations 的原因。
  • 要回滚,你需要回滚你的模型,然后申请schemamigration
猜你喜欢
  • 2012-08-06
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2011-08-14
  • 2012-10-16
相关资源
最近更新 更多