想象一下,我們正在開發一個消息系統,並且每個Message
都有一個用於sender
的外鍵。將任意數據添加到ModelForm的最簡單方法是什麼?
我們使用ModelForm
s,並有MessageForm
推斷其領域從Message
。
當然,我們不希望用戶能夠通過發佈不同的發件人ID來欺騙sender
。
因此,我們必須從ModelForm
中排除sender
,並從session
開始填寫。
在哪裏以及如何將任意數據分配到ModelForm
字段?
在我的例子中,我可能想要訪問session
,所以我們也需要訪問request
。
這是否意味着代碼必須位於視圖中,在表單創建之後?
我們如何從代碼分配表單域並確保它覆蓋POST數據?
(當然,這個例子是非常虛構的,是這裏只是爲了說明這個問題。)
這是一個有價值的補充,我欣賞樣本。謝謝。 –
你能解釋一下在這種情況下'commit = False'是什麼意思? –
@Dan Abramov:'commit = False'是一個可以傳遞給'ModelForm.save()'方法的參數,它將阻止保存底層模型對象。而是創建模型(填充相應的字段)並返回。然後您可以設置其他模型字段並保存模型。 –