Django-formwizard和ModelFormSet保存

时间:2012-07-23 12:32:16

标签: python django django-views formwizard django-formwizard

我正在重写我们的应用程序的一大部分,要求用户创建一个附加Project的{​​{1}}。

表单分为不同的步骤,前两个是正常Rewards,下一个是Project,最后是一个简单的预览,让用户来回轻弹创建一个完美的Rewards

my forms.py

Project

my urls.py

class BaseRewardFormSet(BaseModelFormSet):
    def __init__(self, *args, **kwargs):
        super(BaseRewardFormSet, self).__init__(*args, **kwargs)
        self.queryset = Reward.objects.none()

RewardFormSet1 = modelformset_factory(Reward, extra=2, exclude=('project'), formset=BaseRewardFormSet)

class ProjectForm1(forms.ModelForm):
    """docstring for ProjectForm1"""
    class Meta:
        model = Project
        exclude=( ... )

class ProjectForm2(forms.ModelForm):
    """docstring for ProjectForm2"""
    class Meta:
        model = Project
        exclude = ( ... )

my views.py

instance_dict = {'2': Reward.objects.none()}
url(r'^new-project/$', login_required(ProjectWizard.as_view([ProjectForm1, ProjectForm2, RewardFormSet1, ProjectForm3], instance_dict=instance_dict))),

在渲染重定向时,它显示所有数据都已清除,这意味着表单有效,并且所有项目数据都保存到项目

我可以看到奖励数据因为没有被调用而无法保存,但到目前为止我尝试的每个解决方案都失败了。

如何在保存时将奖励实施到此解决方案中?

也许有人可以对此有所了解,非常感谢!

1 个答案:

答案 0 :(得分:2)

这有用吗?假设Rewardproject

for rw in form_list[2].save(commit=False):
    rw.project = project
    rw.save()