将South添加到Django项目中,开发和生产

13

如何向已有的Django项目添加South?我已经在开发机和“生产”服务器上都安装了它。

我在开发机上执行了以下操作:将South应用程序添加到settings.py中,

python manage.py syncdb
python manage.py convert_to_south myproject.myapp

然后更改了一些模型,然后

python manage.py schemamigration myproject.myapp --auto
python manage.py migrate myproject.myapp

看起来目前还可以。现在我不太确定在生产服务器上该怎么做。只是手动重复所有这些步骤吗?上传修改后的settings.py,进行syncdb,convert_to_south,上传修改后的models.py,进行schemamigration和migrate? 还是其他方法?这里的教程提到要将迁移文件添加到版本控制,那么它们应该被上传并在生产服务器上应用?

此外,目前我在开发机上使用sqlite3,在服务器上使用mysql - 在使用South时会有什么不同吗?


1
南方放置迁移在使用ORM的代码中的好处是,它使它们与后端无关,因此您的迁移将适用于sqlite,mysql以及所有具有后端的数据库。 - Chris Wesseling
3个回答

16

我的指南如下:

  1. 在服务器上安装South。从shell中导入south,以确保您使用的是相同的Python环境。
  2. 'south'添加到settings.pyINSTALLED_APPS中。
  3. 上传settings.py
  4. 重启服务器。
  5. python manage.py syncdb
  6. 上传新的app/models.pyapp/migrations/目录。
  7. 重启服务器。
  8. python manage.py migrate app --fake 0001
  9. python manage.py migrate app
注:以上为IT技术相关内容,涉及具体操作步骤,请按照顺序逐一执行。

我认为这个回答比 @AKX 更好。从问题中可以看出,对于将代码部署到服务器仍然有些困惑。+1(一旦你获得足够的声望来编辑,你应该考虑改进原来接近答案的回答,而不是写一个新的回答)。 - Chris Wesseling
2
为了澄清,如果有人阅读此内容不清楚,“重新启动服务器”并不意味着您必须重新启动整个服务器或虚拟机。只需重启Web服务器即可。例如,如果您使用的是较新版本的Ubuntu + Apache,则“sudo service apache2 reload”就足够了。 - Andrew Gorcester

4
为了确保南向迁移表存在,
python manage.py syncdb

然后。
python manage.py migrate myproject.myapp --fake 0001
python manage.py migrate myproject.myapp

这是对我有效的方法。 :)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接