2009-03-09 37 views
0

Şablon filtre:radyo düğmesi atama

<form method="POST" action="/Bycategory/"> 
<input type="radio" name="andor1" value=1 checked> 
<input type="radio" name="andor1" value=2> 
<select id="pathology_id" name="pathology_id"> 
    {% for pathology in pathology_list %} 
     <option value="{{ pathology.id }}">{{ pathology.pathology }}</option> 
    {% endfor %} 
</select> 

üç arama seçer (patoloji, emtia, teknolojisi) kullanıcı yapmak ve/veya bir karışımı veya maç için olabilir aslında var üç, bu yüzden view.py'de ve/veya seçeneğe ihtiyacım var.

views.py:

def Bypub(request): 
    andor1 = request.POST['andor1'] 
    pathology_id = request.POST['pathology_id'] 
    p = get_object_or_404(Pathology, pk=pathology_id) 
    pub1=Publication.objects.exclude(pathpubcombo__pathology__id= 1).filter(pathpubcombo__pathology=p) 
    list=[] 
    andlist=[] 
    for publication in pub1: 
     if andor1 == 1: 
      if publication not in list: 
       list.append(publication) 
     if andor1 == 2: 
      if publication in list: 
       andlist.append(publication) 
       #list=andlist 
    return render_to_response('search/categories.html', { 
     'andor1' : andor1, 
     'pub1': pub1, 
     'pathology': p, 
     'list' : list, 
     'andlist' : andlist, 
    }, 
     context_instance=RequestContext(request) 
    ) 
Ben bütün kod hatasız çalıştığını biliyorum

ama hat (andor1 == 1 :) ve (andor1 == 2 :) ise varlık ise görmezden geldi. Ben andor1 için değeri kullanıyorum noktada görünmüyor şüpheleniyorum. aslında render_to_response dönüşüne dönmez, çünkü sonraki şablonda bir sonraki değer olarak görünür, aksi halde şablonda yanıtında bir çeşit ve/veya şablonda ==1: görürsünüz. Baska öneri?

cevap

0

teşekkür ederim! Alıntılar çalıştı. Düşüncem, değerin bir sayısal olduğu ve tırnaklara gerek olmaması gerektiği üzerine sıkışmıştı, ben de bunu denemedim.

0
+0

Lütfen sorunuzunuzu düzenleyin: Kod örnekleri için 4 alanlık bir girinti kullanın. –

+0

Bunu, DÜZENLEME metin alanına ve Ctrl + K'ye basarak kodu seçerek kolayca yapabilirsiniz. –

1

andor1 değeri HTML formundan geçirilen ve "1" == 1 Python Yanlış olduğunda bir dizedir. Aşağıdaki deneyin:

try: 
    andor1 = int(request.POST['andor1']) 
except (KeyError, ValueError): 
    andor1 = 0 

Şimdi bir tamsayı olduğunu ve ( if andor1 == 1) aşağıya kontroller başarılı olmalıdır. dizeleri

Alternatif testi:

if andor1 == "1": 
    ...