2014-06-13 1 views
0

누군가 내가 잘못 가고 있다고 말해주십시오. 제가하려는 것은 사용자가 원하는 제품의 수량을 입력하게하고, 제출 된 수량이 0보다 크면 수량과 동일한 형식을 표시합니다. 여러 제품이 있으므로 if 문을 사용하여 게시물에이 제품 이름이있는 곳을 말하고이 양식을 표시하십시오. 내가 얻는 결과는 마지막으로 보낸 제품에 대한 양식 일뿐입니다. 그래서 [달걀, 햄]의 목록에서, 나는 단지 햄을위한 양식을 얻습니다. 가능하다면 아래 코드를 참고하십시오.어떻게 Post-Django의 제출을 ​​기반으로 양식 또는 formset을 표시 할 수 있습니까?

보기 :

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}} 
+0

설정할 때마다이'formset' 다시 때문에이 목록의 마지막 하나되기 때문에. 나는 당신이 "formset'의 목록과 같은 것을 사용해야한다고 생각하고 템플릿에서 반복한다. – iskorum

+0

메신저 꽤 파이썬에 새로운, 좀 더 정교하게 생각할 수 있을까요? – user3525985

답변

0

이 사실 난 완전히 당신이 DB에서 item.quantity을 얻는 이유 코드 (이유를 사용하는 동안, 이해하지 못했다, 수량은 수 musn't POST 데이터에서?)하지만 코드는 다음과 같을 수 있습니다.

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 %} 
+0

괜찮은데 아주 가까이에, 나는 제대로 작동하지 않았기 때문에 if 문을 꺼냈다. 그런 다음 항목에 단 하나의 queryset을 남겨두고 name = 'eggs'를 name = f로 바꿨습니다. 이제는 적절한 수의 양식을 인쇄 중입니다. 양식으로 올바른 이름을 인쇄하기 만하면됩니다. - 그것은 나에게 사전의 마지막 이름만을 제공하지만, 그것들 모두를위한 적절한 양의 형태를 제공한다. – user3525985

+0

내가 편집했으면 확인할 수 있습니다. – iskorum

+0

고마워, 정말 고마워! – user3525985

관련 문제