【问题标题】:Django South - Creating initial migration for an app that has already populated tablesDjango South - 为已经填充表的应用程序创建初始迁移
【发布时间】:2012-12-07 13:19:38
【问题描述】:

场景:我的 Django 应用程序中有一个应用程序,我从未将它置于 South 管理之下。我很久以前运行了一个syncdb,这个应用程序的模型从来没有改变过。一直以来,我显然都在这些表中添加了数据。

现在,我希望把这个应用程序置于南方管理下,但是一旦表已经存在,我可以创建迁移文件,但自然不能执行它们。我收到现有表的数据库错误:

django.db.utils.DatabaseError: (1050, "Table 'ooyala_ooyalaitem' already exists")

这对我来说很明显。我想知道是否有一种聪明的方法可以运行 migrate 命令来使用当前表。我不想转储数据、手动删除表、运行迁移并重新填充内容,也不想为此创建数据迁移。

对此有什么想法吗?有没有可能?

感谢您的宝贵时间。

【问题讨论】:

标签: python django migration django-south


【解决方案1】:

This is covered in the manual.

将应用转换为使用 South 非常简单:

  • 编辑您的 settings.py 并将“south”放入INSTALLED_APPS(假设您已将其安装到正确的位置)
  • 运行./manage.py syncdb 将South 表加载到数据库中。请注意,syncdb 现在看起来不同了 - South 对其进行了修改。
  • 运行 ./manage.py convert_to_south myapp - South 将自动生成并假装应用您的第一次迁移。

请注意,您需要在进行任何更改之前进行转换; South 通过与上次迁移的冻结状态进行比较来检测更改,因此它无法检测到您转换为使用 South 之前的更改。

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 2011-03-11
    • 2013-09-24
    • 2011-08-06
    • 2015-06-27
    • 2013-06-23
    • 2012-03-03
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多