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

Posted

技术标签:

【中文标题】将 South 添加到 Django 项目、开发和生产中【英文标题】:Adding South to Django project, development & production 【发布时间】:2011-05-01 10:06:57 【问题描述】:

将 South 添加到现有的 Django 项目中。我已经将它安装在开发机器和“生产”服务器上。

我在开发机上做了如下操作,然后:将South app添加到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,迁移?有些不同?教程here 说了一些关于向版本控制添加迁移的内容,因此,大概应该将它们上传并以某种方式应用到生产服务器上?

此外,现在我在开发机器上使用 sqlite3 并在服务器上使用 mysql - 这会让事情变得不同吗?

【问题讨论】:

South 将迁移放入使用 ORM 的代码中的好处在于它使它们与后端无关,因此您的迁移将适用于 sqlite、mysql 和所有具有后端的数据库。 【参考方案1】:

在 Django >= 1.7 中不需要这样做 我被困在这超过 1 小时 :) 最后发现 1.7 及更高版本在构建升级中从南方开始

更多信息https://docs.djangoproject.com/en/1.7/topics/migrations/#upgrading-from-south 可能这个对你有帮助

【讨论】:

【参考方案2】:

我的向导说:

    在服务器上安装 South。 import south 来自 shell,只是为了确保您使用的是相同的 python 环境。 在settings.py 中添加'south'INSTALLED_APPS。 上传settings.py。 重启服务器 python manage.py syncdb。 上传新的app/models.pyapp/migrations/ 目录。 重启服务器。 python manage.py migrate app --fake 0001 python manage.py migrate app

【讨论】:

我认为这比@AKX 更好地回答了这个问题。人们可以从关于将他的代码部署到服务器的问题中弄清楚。 +1(一旦您获得足够的声誉进行编辑,您应该考虑改进原来的答案,这些答案很接近,而不是撰写新答案。) 澄清一下,以防任何阅读此内容的人不清楚:“重新启动服务器”并不意味着您必须重新启动整个服务器或虚拟机。只需反弹网络服务器。例如,如果您使用的是较新版本的 ubuntu + apache,“sudo service apache2 reload”就足够了。【参考方案3】:

为了确保南迁表存在,

python manage.py syncdb

然后

python manage.py migrate myproject.myapp --fake 0001
python manage.py migrate myproject.myapp

这对我有用。 :)

【讨论】:

以上是关于将 South 添加到 Django 项目、开发和生产中的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL + Django + South 的第一步

makemigrations 和升级到 Django 1.7 的问题

在 Django 1.7 迁移之前运行 South 迁移的推荐方法是啥?

从 South 迁移到 Django 1.7 迁移:可交换依赖项

Django South:结合“alter table”以获得更好的性能?

在开发过程中使用 Django、South 和 Sqlite [关闭]