[英]Django: cannot migrate due to object reference in form
由於表單中的get_or_create()
函數,我無法在新數據庫上運行django遷移。
表格
class EmployeeForm(...):
# Make sure that we have a directory before initializing the form
default_upload_directory = Directory.objects.get_or_create(name='Employee', parent=None)[0]
這是我編寫的自定義表單的重要部分。 它將員工的上載文件鏈接到默認目錄。 除遷移外,其他一切正常。 當我在新數據庫上運行它時,它將抱怨django.db.utils.OperationalError: no such table: filemanager_directory
。 如果我使用標准的objects.get(..)
訪問Directory對象,也會發生這種情況。
我不確定該如何解決。 顯然,該表尚不存在。 在已有表的現有數據庫上,一切正常。
編輯:我試圖運行的遷移與此應用程序無關。 此外,作為一種解決方法,您可以注釋掉該行,運行遷移並重新激活它……但這不是一個很好的解決方案……
很簡單,這不是您應該做的事情。 您不應該在導入時運行的任何代碼中運行任何類型的數據庫訪問,而這樣做是這樣做的。
在任何情況下都絕對不需要這樣做。 如果您的目標是確保實例化表單時存在一個對象,請將其放在__init__
方法中。
但是,您還應該反映出,確保數據庫對象存在首先是遷移的工作 。 為此,請使用RunPython方法編寫數據遷移。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.