2

我正在使用与一个模型匹配的 Formwizard 开发一个向导。同样由于我的模型和其他模型之间的关系,我使用 inlineformset_factory 使模板中存在字段。

我为模型属性创建了 2 个具有相同模型的表单。我刚刚更改了 fields 属性以区分我在向导中使用的两种表单。

在我的向导中保存表单信息的那一刻,我正在这样做:

    def done(self, request, form_list):
    instance = Sale()
    for form in form_list:
        for field, value in form.cleaned_data.iteritems():
            setattr(instance, field, value)
    instance.save()

这很好用,但不能保存我的内联表单集

所以我在 done 方法中添加了这个:

    picture_formset = ProductPictureFormset(request.POST, instance=instance)
    if picture_formset.is_valid():
        picture_formset.save()

但是当我这样做时,我在 Django 中有这个错误:

Exception Type: ValidationError

我注意到我的内联表单集中包含的数据没有在步骤之间传递。这就是我现在在向导中添加内联表单集的方式:

def parse_params(self, request, *args, **kwargs):
    if self.step == 0:
        self.extra_context.update({
            'picture_formset': ProductPictureFormset(),
            'brand_attribute_formset': BrandAttributeFormset()
        })

但似乎我必须找到一种方法,将这些表单中检索到的数据传递到第二步。

任何想法如何做到这一点?

谢谢!

4

1 回答 1

1

我已经对我的模型进行了一些重构,以便能够在 process_step 的每个步骤中保存每个模型。我也在会话中存储信息。

于 2011-07-26T02:47:31.420 回答