簡體   English   中英

Django:由於表單中的對象引用而無法遷移

[英]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.

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