2011-10-20 182 views
1

我有一個Django模型是這樣的:兩種形式的一種模式

class Something(models.Model): 
    attr1 = models.IntegerField() 
    attr2 = models.IntegerField() 
    attr3 = models.IntegerField() 

我想要一個窗體來創建東西對象,但我想用一個WizardForm做到這一點,所以我分裂'大表'分成兩種形式,如下:

class Form1(forms.ModelForm): 
    class Meta: 
     model = Something 
     exclude = ('atrr3',) 


class Form2(forms.ModelForm): 
    class Meta: 
     model = Something 
     fields = ('atrr3',) 

所以兩者一起構成了完整的模型形式。 所以這裏去我的問題:有沒有辦法將它們都保存在一起,並創建一個東西對象他們?

回答

1

經過大量的谷歌搜索,我找到了我的問題的答案。我會後對任何人有同樣的問題:

如果你有一個以上的表格,你需要將它們結合起來,創造一個模型的對象,你可以做這樣的事情:

data = {} 
# being list_form a iterable list of forms 
for form in list_form: 
    data.update(form.cleaned_data) 
Something.objects.create(**data) 

我認爲這是一個簡單而不錯的解決方案。

+0

因爲我有相同的要求,你能幫助我嗎? – MysticCodes

+0

這是很古怪的。我正在考慮在每個表單中創建隱藏字段來存儲以前的表單信息,但這是非常簡單的! –

0

你真的試過Django's Form Wizard嗎?

隨着文檔狀態:

一旦用戶提交的所有形式和所有的數據已經 驗證,嚮導處理數據 - 它保存到數據庫中, 發送電子郵件,或者應用程序需要做的任何事情。

雖然它可能是有意義的使用將被包含在1.4重寫的嚮導:

http://django-formwizard.readthedocs.org/en/latest/index.html

usage instructions真的簡單。

+0

nope,沒有回答我的問題,我已經使用FormWizard。 – juliomalegria

+0

然後我不明白你的問題。你想要那個巫師不做什麼?它將數據條目分成不同的步驟,驗證每個步驟/表單並最終將數據保存到數據庫。所以它節省了「他們在一起」,不是嗎? – arie