Django South - 为已填充表格的应用程序创建初始迁移

时间:2012-12-07 13:19:38

标签: python django migration django-south

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

现在,我希望将此应用程序置于南方管理之下,但是一旦表格已经存在,我就可以创建迁移文件,但很自然地,我无法执行它们。我收到现有表的数据库错误:

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

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

有关于此的任何想法吗?它甚至可能吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:12)

This is covered in the manual

  

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

     
      
  • 修改您的settings.py并将'south'放入INSTALLED_APPS(假设您已将其安装到正确的位置)
  •   
  • 运行./manage.py syncdb将南表加载到数据库中。请注意,syncdb现在看起来有所不同 - 南方修改它。
  •   
  • 运行./manage.py convert_to_south myapp - 南方将自动制作并假装应用您的首次迁移。
  •   
     

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