1

我对 Django 很陌生。刚刚浏览了教程并尝试使用我自己的应用程序。

我遇到了以下情况:在我开始我的项目后(在运行 syncdb 之后)我意识到,当我最初编写 models.py 文件时,我在我的一个表中遗漏了一个列。我通过添加列编辑了我的 models.py 文件,然后运行:django-admin.py flush。

它固执地不会添加该列。在 manage.py shell 中请求 table.objects.all() 会导致错误说 new_column 不存在。

直到最后我进入 dbshel​​l 并手动删除了表,然后再次运行 dbsync ......

冲洗首先不做上述事情吗?在 django 中创建表后修改表的最佳方法是什么?

谢谢!

4

3 回答 3

1

看看这个问题的公认答案为什么我的南方迁移不起作用?.

所以很少有顺序执行南命令的情况。小心,它会给你带来麻烦。

于 2013-08-02T21:15:18.113 回答
1

Daniel 的回答涵盖了您需要知道的内容,但是为了回答您的其他问题,flush只会将您的数据库回滚到其 post-syncdb 状态。它将删除您的所有数据并使用任何initial_data固定装置填充它,但不会检查模型中的新字段等。

于 2013-08-02T21:17:17.657 回答
1

您正在寻找的是一种进行数据迁移(特别是模式迁移)的方法。请参阅South Documentation以获得执行此操作的简单工具。

它本质上取代了你告诉它的任何应用程序的同步数据库,然后可以让它自动写入迁移。虽然在开始时这似乎比它的价值更多,但一旦您在数据库中拥有真实数据,您会发现每次都不必删除(然后重新创建)表真是太好了更新您的模型。

于 2013-08-02T21:10:41.463 回答