我是django的新手。刚刚浏览了这个教程并尝试使用我自己的应用程序。
我遇到了以下情况: 我在开始我的项目(运行syncdb之后)后意识到,当我最初编写models.py文件时,我在其中一个表中遗漏了一列。我通过添加列编辑了models.py文件,然后运行: django-admin.py flush。
它固执地不会添加列。在manage.py shell中请求table.objects.all()会导致一个错误,表示new_column不存在。
直到最后我进入dbshell并手动删除了表,然后再次运行dbsync ...
首先不冲洗上面的内容吗?在django中创建表后修改表的最佳方法是什么?
谢谢!
答案 0 :(得分:1)
您正在寻找的是一种进行数据迁移的方法(特别是模式迁移)。 请参阅South Documentation以获取执行此操作的简便工具。
它基本上取代了你告诉它的任何应用程序的syncdb,然后可以让它自动编写迁移。虽然这可能看起来比开始时的工作更多,但是一旦你达到数据库中有真实数据的程度,你会发现每次你不必删除(然后重新创建)表格是很好的。更新您的模型。
答案 1 :(得分:1)
查看此问题Why don't my south migrations work?上接受的答案。
因此,执行south命令的顺序很少。小心,它会让你陷入困境。
答案 2 :(得分:1)
Daniel的回答涵盖了您需要知道的内容,但是,为了回答您的其他问题,flush只会将您的数据库回滚到其后syncdb状态。它将删除所有数据并使用任何initial_data
灯具填充它,但不会检查模型中的新字段等。