2010-09-30 69 views
3

有一個非常相似的問題,但我想以另一種方式問它。Django優勢forms.Form vs forms.ModelForm

我是一個非常自定義的人,但我喜歡有時快捷鍵。所以在這裏。

我確實發現這兩個類非常相似,儘管一個「幫助」程序員更快地編寫代碼或具有更少的代碼/重複代碼。將模型連接到表單聽起來像是一件顯而易見的事情。有一點在使用ModelForm的文檔中不是特別清楚。如果您需要添加不在模型中的額外字段或以某種方式連接到另一個模型,會發生什麼情況?

我想你可以將其子類化並使其工作,但這確實可以幫助您節省時間,而不僅僅是手動使用Form來完成工作嗎?

所以下一個問題可能沒有明確的答案,如果我做了子類化,並使用ModelForm。 ModelForm比Form更快嗎?它是否仍然使用相同的更新技術,或者在一個或另一箇中的綁定速度更快?

回答

3

如果要在兩種模式一種形式,你有幾個選擇:

1)創建兩個modelforms,保存每個單獨發佈時,如果這兩個中的一個依賴於其他(即外鍵)在保存之前在你的視圖中設置。

2)嘗試Django的內聯表單集:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view

3)添加非示範田到您的ModelForm。在ModelForm上,您可以添加與您的模型無關的字段。它們可以像其他字段一樣在clean_data中使用,但在模型保存時會被忽略。

ModelForm對Form的一個好處是您可以指定字段順序(搜索如何順序地將您的帖子帶到您的帖子中)。明顯的其他優點是你不必重寫你的模型保存代碼

+0

這很有道理謝謝。 – Atherion 2010-10-13 23:49:18