簡體   English   中英

Django在數據庫更改時更新models.py

[英]Django update models.py when database changes

我知道這可能是一個門檻問題,但我已經半個小時試圖弄清楚這個問題,卻找不到任何東西:S

我有一個django應用,並且我大大改變了我的數據庫表。 我想更新我的models.py文件,但是我嘗試了以下命令,但沒有任何反應。

syncdb,遷移,makemigrations ...

我想刪除以前的模型文件並創建一個新文件。

謝謝!

您以錯誤的方式獲得了工作流程。

Django有一個管理您的數據庫的ORM。 如果要進行更改,請編輯models.py文件。 遷移將自動更改數據庫表以匹配您的新模型。 反之則行不通:Django不使用數據庫自​​省來獲取數據庫中的手動更改並編輯模型文件。

現在,有一種解決方法,但這不是長期解決方案。 隨着時間的流逝,您將希望向模型中添加自定義功能,並且您不想在每次更改后都重寫該功能。 Django提供的自省功能也不是完美的,它僅是一種用於快速開始在遺留數據庫之上開發應用程序的工具。

您可以使用manage.py inspectdb所有現有表生成Django代碼。 然后,您可以將特定模型的代碼復制到models.py文件中。 然后,您應該刪除managed = Falsedb_table = ...選項,刪除所有遷移,仔細檢查字段,然后重新運行makemigrationsmigrate --fake-initial 這將使數據庫,您的模型和遷移重新同步,然后您就可以使用遷移框架進行任何其他更改。

請務必閱讀有關遷移的文檔。 這應該使您對Django如何管理數據庫以及對數據庫進行更改的工作流程有一個很好的了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM