一种模型的两种形式

时间:2011-10-20 06:59:51

标签: django django-models django-forms

我有一个像这样的django模型:

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

我想创建一个表单来创建 Something objects ,但我想使用WizardForm来完成它,所以我将'big form'分成两种形式,如:

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


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

所以两者一起制作完整的模型形式。 所以这里是我的问题:有没有办法将它们保存在一起并从中创建一个 Something对象

2 个答案:

答案 0 :(得分:2)

经过大量的谷歌搜索后,我找到了问题的答案。我会把它发布给有同样问题的人:

如果您有多个表单,并且需要将它们组合在一起以创建模型的对象,则可以执行以下操作:

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

我认为这是一个简单而且非常好的解决方案。

答案 1 :(得分:1)

你真的试过Django's Form Wizard吗?

正如文档所述:

  

用户提交完所有表格后,所有数据都已提交   验证后,向导处理数据 - 将其保存到数据库,   发送电子邮件,或者应用程序需要做的任何事情。

尽管使用将包含在1.4中的重写向导可能是有意义的:

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

usage instructions非常简单。

相关问题