我正在使用与一个模型匹配的Formwizard开发向导。 同样由于我的模型和其他模型之间的关系,我使用inlineformset_factory来使模板中存在字段。
我为模型属性创建了两个具有相同模型的表单。我刚刚更改了fields属性,以区分我在向导中使用的2个表单。
目前在我的向导中保存表单信息我正在这样做:
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()
这很有效但不保存我的inlineformsets
所以我在done方法中添加了这个:
picture_formset = ProductPictureFormset(request.POST, instance=instance)
if picture_formset.is_valid():
picture_formset.save()
但是当我这样做时,我在Django中遇到了这个错误:
Exception Type: ValidationError
我注意到我的内联表单集中包含的数据不会在步骤之间传递。 这就是我现在在向导中添加内联formset的方法:
def parse_params(self, request, *args, **kwargs):
if self.step == 0:
self.extra_context.update({
'picture_formset': ProductPictureFormset(),
'brand_attribute_formset': BrandAttributeFormset()
})
但似乎我必须找到一种方法将这些表格中检索到的数据传递给第二步。
任何想法怎么做?
谢谢!
答案 0 :(得分:1)
我已经重构了一些我的模型,以便能够在process_step的每一步保存每个模型。我也在会话中存储信息。