2017-10-19 95 views
1

使用Django管理面板時,我可以將新實例添加到用戶和組。同樣的事情適用於我的所有應用程序,除了一個。這個應用程序,resultregistration,每當我嘗試添加新模型時,都會給我一個ProgrammingError。例如,這個應用程序有一個競爭模型,其中應存儲關於運動競賽的數據。在向數據庫添加新模型實例時,Django中的ProgrammingError有什麼問題?

當我點擊「+添加」我被帶到正確的網站,我可以添加一個新的競爭。然而,當我按保存我得到:

ProgrammingError在/管理/ resultregistration /競爭/添加/

列關係的 「competition_category」 「resultregistration_competition」 不存在 LINE 1:INSERT INTO 「resultregistration_competition」( 「competition_c ...

當然,我認爲遷移有些問題,但是我已經運行了python manage.py makemigrations appname和python manage.py migrate appname,並且工作正常。有「沒有檢測到變化」和「沒有遷移應用」

我已經嘗試過在SO上發佈的解決方案,但他們都沒有工作。

這個錯誤的一般原因是什麼?有沒有人知道在這個特定情況下可能會出現什麼錯誤?如果在模型中定義了錯誤,會不會得到這個錯誤?還是必須是遷移問題?

非常感謝!任何幫助將被真正讚賞。此外,我使用PostgreSQL,如果有幫助。

+0

如果沒有訪問應用的代碼和修訂歷史記錄,就無法回答。您的模型是由ORM管理還是遺留表格?何時創建此「competition_category」列並且是否存在匹配遷移? (提示:閱讀你的應用程序的遷移,並檢查'django_migrations'表來找出哪些應用程序和什麼時候)。 –

+0

遷移有問題。檢查你的數據庫看看'competition_category'列是否真的存在。我建議你逐一回滾遷移並重新應用它們以找出發生此問題的位置。 – anupsabraham

回答

2
  • 請確保您有_ 初始化 _.py爲paticular應用程序的遷移文件夾下的文件。
  • 運行manage.py makemigrations總是進行了遷移文件,如果有你的models.py任何改變

如果沒有完成,沒有心不是在數據庫中存在大量的數據,最終的解決方法是刪除所有遷移文件(如果有的話),在終端類型「sudo -su postgres」中輸入「psql」。

刪除數據庫並創建一個新數據庫。運行manage.py makemigrations來檢查是否已創建遷移文件。然後使用manage.py遷移

+0

謝謝!丟棄數據庫是這次的唯一工作:) – user3257736

+1

@ user3257736多數民衆贊成在最後的手段。 –

相關問題