2012-08-13 51 views
3

我有兩個模型在Django視圖

結合modelformset和inlineformset
class A(models.Model): 
     name = models.CharField(50) 
     type = models.CharField(50) 

    class B(models.Model): 
     field1 = ForeignKeyField(A) 
     value = IntegerField() 

我想通過ModelFormSet顯示多個的形式(從模型A)其中反過來InlineFormSets形式顯示中的每一個(從模型B)爲連接到對象的所有對象。

如何在django視圖中將保存方法結合modelformsets(model A)和inline formsets(mdoel B)?

回答

0

我不知道這是一個很好的解決方案,但這是我能想出的唯一解決方案。

我會創建一個詞典列表。每個字典將有一個baseForm鍵,它將保存你的B類形式和一個inline_forms鍵,它將保存你的類A inline_formset。

在您的視圖代碼中遍歷列表並相應地打印表單。爲每個表單提交不同的值提交按鈕。 例如submit_1爲第一個表單,蝕刻..

當表單被提交時,檢查這個值(提交按鈕的值),如果該值是例如submit_2你確定第二個項目/形式您的列表已提交。 從他們你可以開始處理提交的數據。

+0

這意味着我需要10個表單提交10個提交按鈕? – Asif 2012-08-13 08:30:26

+0

是的,這就是你要求的嗎?在一個頁面上有多個表單。每個單獨的表單都需要提交按鈕,否則無法提交。 – 2012-08-13 08:36:09

0

一週前我一直在努力。我建議你開始使用inlineformset_factory方法:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

然後,只需將您的基本窗體和您的formset添加到您的視圖並呈現它們。

這裏的一些博客文章,幫助我弄清楚了這一點:http://charlesleifer.com/blog/djangos-inlineformsetfactory-and-you/

還有一個解決方案,使其工作使用基於類的意見:http://haineault.com/blog/155/

+0

我認爲這些鏈接只會描述一個表單和相關的內聯表單。但我希望通過ModelFormSet(來自模型A),其中每個窗體依次顯示InlineFormSets(從模型B)連接到對象的所有對象 – Asif 2012-08-13 07:27:13

+0

所以你需要一個inlineformsets的formset。內聯窗體的這些表單是固定的還是動態的? – 2012-08-13 07:31:34

+0

是的,它是動態的。我想modelformset爲模型A,然後內聯formsets每種形式modelformset – Asif 2012-08-13 07:37:55