Django Inlineformset无法正常工作

时间:2015-10-02 20:00:00

标签: django

我是Django的新手,所以提前感谢您的耐心等待。我正在尝试完全按照此处概述的使用inlineformset: http://charlesleifer.com/blog/djangos-inlineformsetfactory-and-you/  问题是,我收到了一个错误,比如“在赋值之前引用''ingredient_formset'”。我看到这是有道理的,在提交的无效表单的情况下,但我不知道如何解决它,以便用户返回带有输入值的表单。

您能就如何解决错误提出任何建议吗?我知道原帖是过时的。我应该尝试一种更新的方法吗?非常感谢,嘉莉

1 个答案:

答案 0 :(得分:0)

查看您发布的链接中的代码,我可以看到在所有情况下都定义了ingredient_formset变量。

也许您在缩进时出错并且主要的其他代码块适用于if form.is_valid()而不是if request.POST条件?

编辑:这是相同代码的更好且有效的版本

def submit_recipe(request):
    form = UserSubmittedRecipeForm()
    ingredient_formset = IngredientFormSet(instance=Recipe())

    if request.POST:
        form = UserSubmittedRecipeForm(request.POST)
        if form.is_valid():
            recipe = form.save(commit=False)
            ingredient_formset = IngredientFormSet(request.POST, instance=recipe)
            if ingredient_formset.is_valid():
                recipe.save()
                ingredient_formset.save()
                return HttpResponseRedirect(reverse('recipes_submit_posted'))
    return render_to_response("recipes/submit.html", {
        "form": form,
        "ingredient_formset": ingredient_formset,
    }, context_instance=RequestContext(request))