如何根据Post-Django的提交显示表单或表单集?

时间:2014-06-13 05:40:08

标签: django formset

有人请告诉我哪里出错了。我要做的是让用户输入他们想要的产品数量,并在提交时,如果该数量大于0,则显示等于数量的表格。有多个产品,所以我使用if语句来说明帖子有这个产品名称的位置,显示这个表单。我得到的结果只是最后一个产品的表格。所以在[鸡蛋,火腿]列表中,我只得到一份火腿形式。请尽可能帮助,这是我的代码。

查看:

 if request.method =='POST':
    session = request.session._session_key
    formtype = request.POST.getlist('name')

    i = 0

    while i < len(formtype):
        for f in formtype:
            if f == 'eggs':
                 item = CompReg.objects.get(sessionid = session, name='eggs')
                 extra = item.quantity
                 listmemformset = modelformset_factory(ProBachata, form=ProBachataF,extra=extra)
                 formset = listmemformset()
            elif f == 'ham':
                 item = CompReg.objects.get(sessionid = session, name='ham')
                 extra = item.quantity
                 listmemformset = modelformset_factory(ProBachata, form=ProBachataF,extra=extra)
                 formset = listmemformset()
        i += 1

 else:
    extra = 0

模板:

  {{formset.as_p}}

1 个答案:

答案 0 :(得分:0)

实际上我并没有完全理解你的代码(为什么要使用,为什么你从db获得item.quantity,数量musn是否在POST数据?),但你的代码可能是这样的; < / p>

if request.method =='POST':
    session = request.session._session_key
    formtype = request.POST.getlist('name')

    formsets = []
    for f in formtype:
        if f == 'eggs':
            item = CompReg.objects.get(sessionid=session, name='eggs')
        elif f == 'ham':
            item = CompReg.objects.get(sessionid=session, name='ham')

        extra = item.quantity
        listmemformset = modelformset_factory(ProBachata, form=ProBachataF, extra=extra)
        formset = {'name': f, 'form':listmemformset()}
        formsets.append(formset)
else:
    extra = 0

模板:

{% for formset in formsets %}
name: {{formset.name}}
{{formset.form.as_p}}
{% endfor %}