2011-10-20 185 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