Django Inline Formset Issue (список вне диапазона) - PullRequest
1 голос
/ 18 февраля 2011

Это должно быть просто, и у меня на самом деле было вчера. Я понятия не имею, что изменилось, но теперь выдает ошибку.

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))

Спасибо за любую помощь в этом

Ответы [ 2 ]

9 голосов
/ 18 февраля 2011

Кажется, моя проблема связана с отсутствием аргумента экземпляра в моем наборе форм.

Я должен был иметь следующее:

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

Медленно, но верно я научусь не делать глупых ошибок

1 голос
/ 18 февраля 2011

Вы всегда должны публиковать полный трекбек, чтобы люди могли лучше помочь.

Если вы говорите, что ничего не изменилось и оно работало вчера, есть одна область, где код не нужно менять, чтобы бросить IndexError:

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

Ты уверен, что это не проблема?

В любом случае, пока мы не увидим след, трудно сказать;)

...