django south migration:重置架构只有几个表

时间:2014-01-19 16:54:19

标签: django django-south

我是新的django南迁。我有我的主应用程序和该应用程序的大多数附加功能,我构建为主应用程序的子应用程序。现在我想要做的是重置特定于主应用程序的子应用程序的表。我不想从其他表表中删除任何数据。

这就是我的数据库的样子:

 public | tos_agreement                       | table | g_db_admin
 public | tos_agreementversion                | table | g_db_admin
 public | tos_signature                       | table | g_db_admin
 public | userclickstream_click               | table | g_db_admin
 public | userclickstream_stream              | table | g_db_admin
 public | vote                                | table | g_db_admin
(80 rows)

我只想重新构建(转储所有数据)
 公众| userclickstream_click |表| g_db_admin  公众| userclickstream_stream |表| g_db_admin

如何使用南迁移来实现此目的。

在我的south_migrationhistory表中,我有以下内容:

  15 | userclickstream   | 0001_initial                                                                | 2013-12-10 13:26:15.684678-06
  16 | userclickstream   | 0002_auto__del_field_stream_auth_user                                       | 2013-12-10 13:26:15.693485-06
  17 | userclickstream   | 0003_auto__del_field_stream_username__add_field_stream_user                 | 2013-12-10 13:26:15.721449-06

我认为这个记录是在我最初使用南迁移进行连接的时候发生的。

我还在想,如果? 从south_migrationhistory中删除上述记录,然后重新运行此应用程序的迁移,该应用程序将生成表格。

./manage.py schemamigration userclickstream --initial
./manage.py migrate userclickstream

1 个答案:

答案 0 :(得分:1)

这样做:

  1. 打开终端并写下manage.py dumpdata > backup.json。它将创建一个json fixture,其中包含当前数据库中的所有数据。这样,如果您搞砸了任何东西,您总是可以使用manage.py loaddata backup.json重新加载数据(请注意,所有表格都必须为空才能使其生效)。
  2. 可选:使用前面提到的loaddata命令将数据传递到新的开发数据库
  3. 编写自己的迁移,不要担心破坏任何东西,因为 - 嘿,你有一个备份。它可能需要一些学习,但基本的想法是你创建一个具有两个函数的迁移类 - 正向和反向。查看south documentation并从那里慢慢拿起它。
  4. 回到过去,问题就是你在路上遇到的任何问题和麻烦
  5. 这不是一个编码的“这是解决方案”的答案,但我希望这有助于