【发布时间】:2014-03-24 12:02:45
【问题描述】:
所以这个杀了我一天,我仍然不知道为什么我的解决方案有效。我想我会分享它以防有人遇到这个问题。
Django 1.6
我有一个 FormView 和一个表单和内联表单集。 我自己处理帖子
def post(self, *args, **kwargs):
foo_form = self.form_class(self.request.POST)
if foo_form.is_valid():
foo = foo_form.save(commit=False)
bar_formset = BarInlineFormset(self.request.POST, instance=foo)
if bar_formset.is_valid():
foo.save()
bar_formset.save()
# redirect here
return HttpResponseRedirect('whatever')
kwargs['form'] = foo_form
# in my get_context_data I'm setting context['bar_formset'] if i pass it in as a kwarg so errors from the articleformset are retained
kwargs['bar_formset'] = bar_formset
context = self.get_context_data(**kwargs)
return render(self.request, self.template_name, context)
这适用于创建全新的 foo。但是,一旦您尝试编辑 foo 或其对应的条形图,您就会得到一个
IndexError: list index out of range。
错误其实和
https://code.djangoproject.com/ticket/15574
然而,通读这个错误,症状根本不一样——即没有同时编辑对象,没有删除或更改关系。
发生了什么事?
【问题讨论】:
标签: python django django-forms django-class-based-views inline-formset