【问题标题】:Django Inline Formset Issue (list out of range)Django Inline Formset 问题(列表超出范围)
【发布时间】:2011-02-18 03:07:10
【问题描述】:

这应该很简单,实际上我昨天已经开始工作了。我不知道发生了什么变化,但它现在抛出了一个错误。

def game_design(request):
    user=User.objects.get(pk=request.user.id)
    organization=user.organization_set.all()[0]
    website=organization.website_set.all()[0]
    surveys=website.survey_set.all()
    error=''
    SurveyFormSet=inlineformset_factory(Website, Survey, extra=0, can_delete=True)
    NavigationFormSet=modelformset_factory(Navigation, extra=1)
    if request.method=='POST':
        survey_formset=SurveyFormSet(request.POST, request.FILES, prefix="surveys")
        navigation_formset=NavigationFormSet(request.POST, request.FILES, prefix="navigations")
        if survey_formset.is_valid() and navigation_formset.is_valid():
                survey_formset.save()
            navigation_formset.save()
            return HttpResponseRedirect("/rewards/")
        else:   
            error="Please fix your errors"
           survey_formset=SurveyFormSet(request.POST, request.FILES,prefix="surveys")
           navigation_formset=NavigationFormSet(request.POST, request.FILES,prefix="navigations")
           return render_to_response('website/game_design.html', {'website':website,'survey_formset':survey_formset, 'navigation_formset':navigation_formset, 'error':error}, context_instance=RequestContext(request))
    else:
         survey_formset=SurveyFormSet(instance=website,prefix="surveys")
         navigation_formset=NavigationFormSet(queryset=Navigation.objects.none(),prefix="navigations")
    return render_to_response("website/game_design.html", {'website':website,'survey_formset':survey_formset,'navigation_formset':navigation_formset,'error':error},context_instance=RequestContext(request))

感谢您对此的任何帮助

【问题讨论】:

  • 代码中不存在此处的缩进错误。在我检查 POST 方法后,错误似乎立即出现在行中。我想这可能是一个模板错误,但我正在使用 {{form.as_p}} 并且现有的调查显示正确

标签: django inline-formset


【解决方案1】:

我的问题似乎与我的 Formset 中不包含实例参数有关。

我应该有以下几点:

survey_formset=SurveyFormSet(request.POST, request.FILES, instance=website, prefix="surveys")

慢慢但肯定我会学会不犯愚蠢的错误

【讨论】:

  • 请标记为已回答(这告诉人们在搜索结果等中查看您的问题已得到回答。
【解决方案2】:

您应该始终发布完整的追溯信息,以便人们可以提供更好的帮助。

如果您说没有任何变化并且昨天还在工作,那么有一个区域不需要更改代码即可抛出 IndexError

organization=user.organization_set.all()[0]  
website=organization.website_set.all()[0]

你确定这不是问题?

不管怎样,在我们看到回溯之前,很难说 ;)

【讨论】:

  • 对不起Yuji,我是菜鸟。我附上了回溯。
猜你喜欢
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多