将信息附加到其GET请求中的表单

时间:2019-08-23 14:42:58

标签: django django-forms

我正在模板中使用此代码将信息附加到GET请求

"{% url 'foo_create'%}?fooHolder_pk={{fooHolder.pk}}"

,我有一个表格。现在我想使用fooHolder.pk将它作为外键以GET请求的形式附加到foo。但是当我这样做的时候。 POST请求仍然显示外键为空。

注意:我正在使用基于函数的视图

视图

def foo_create(request):
    data = dict()

    if request.method == 'POST':

        form = fooForm(request.POST,request.FILES)
        if form.is_valid():
            form.save()

            data['form_is_valid'] = True
            foos = foo.objects.all()
            data['html_foo_list'] = render_to_string('app1/includes/partial_foo_list.html',{'foos':foos})
        else:
            # print(form.errors)
            data['form_is_valid'] = False


    else:
        fooHolder_pk = int(request.GET['fooHolder_pk'])
        form = fooForm()
        form.fooHolder = fooHolder.objects.get(id = fooHolder_pk) 
        form.save(commit=False)


    context = {'form':form}
    data['html_form'] = render_to_string('app1/includes/partial_foo_create.html', context, request=request)

    return JsonResponse(data)

1 个答案:

答案 0 :(得分:0)

自从form传递到模板以来,您应该在表单的操作URL中使用{{ form.fooHolder.pk }}

此外,在POST处理程序内,您仍然可以使用request.GET.get('fooHolder'),因为GET字典始终包含所有 query参数,而与HTTP方法无关使用。