2012-05-17 61 views
3

我有一個Django項目有兩種模式:申請人和客戶,其中客戶是申請人的子類。我想要一種允許用戶將現有申請人實例添加爲客戶端的方式。我已經對申請人實例有了一個觀點,所以我認爲在該頁面上有一個客戶模型表單就可以做到這一點,但是從the documentation看來,你不能用一個超類實例初始化模型表單。我知道我可以通過直接訪問數據庫並向子類表添加一個字段的代碼來實現這一點,但是有沒有更多的Django-y方式來實現它?Django工作流將模型超類轉換爲子類

回答

10

您可以從現有Applicant下創建了Client實例與下面的代碼:

client = Client(applicant_ptr=applicant) 
client.save_base(raw=True) 
+0

什麼是第二行嗎?我無法在文檔中找到 – murgatroid99

+0

代碼是[here](https://github.com/django/django/blob/master/django/db/models/base.py#L486)。基本上它是做你想做的 - 它迫使Django在子類的表格中創建正確的記錄而不創建新的「申請人」。 – dgel

+0

據我所知,這完美運作。謝謝。 – murgatroid99