2015-08-24 28 views
1

許多衛星之前,我使用瞭如./manage.py reset appnameDROP之類的命令,然後重新創建單個App的數據庫表。這對於其他開發人員無意中手動分解數據庫中的某些內容並且想要重置某些內容而不影響其他應用程序(或需要經過冗長的轉儲/加載過程)時非常方便。爲單個Django 1.7應用程序重新創建表格

Django 1.7及其內置遷移支持的出現似乎已經刪除並重命名了很多這些命令,而且我將與文檔中的所有共享前綴交叉。有人能爲我解釋這一點嗎?

如何重置單個應用程序(帶有遷移的表)?

+0

possible [duplicate](http://stackoverflow.com/questions/15454008/how-to-reset-db-in-django-i-get-a-command-reset-not-found-error)。該命令被重命名爲flush。這不適用於一個應用程序。 [this](https://github.com/gregmuellegger/django-reset)是一個支持一個應用程序的重置支持 – Ward

+1

如果它不是*太*破碎我想你可以'manage.py migrate 零'。 – spectras

+0

@spectras(與標準遷移一起)完美地完成了這項工作。提交答案,我會接受。 – Oli

回答

2

如果您的Django遷移子系統本身沒有損壞,則重置應用程序的正常方法是運行manage.py migrate <app> zero

這將向後運行的所有應用程序的遷移,所以幾件事情值得注意:

  • 如果某些應用程序的遷移是不可逆的,該過程將失敗。由於Django只能創建可逆遷移,所以不應該正常發生。但是,您可以自己構建不可逆轉的數據 - 通常是在創建數據遷移時。

  • 如果其他應用程序依賴於此應用程序,它也將向後遷移到不依賴於此的最後一次遷移。

然後,您可以再次運行遷移,以便向前運行。

在任何情況下,記住遷移會爲您的數據帶來風險,因此請在觸摸任何內容之前備份數據庫。

相關問題