検索フィルターとしてのラジオボタンの割り当て
-
06-07-2019 - |
質問
テンプレート:
<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>
実際には3つの検索選択項目があります(病理、商品、 テクノロジー)ユーザーは、3つを組み合わせたり、組み合わせたりすることができます。 views.pyでand / orオプションが必要な理由です。
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)
)
すべてのコードがエラーなしで機能することはわかっていますが、行(andor1 == 1 :)および(andor1 == 2:の場合) 無視されています。 andor1の値が表示されないと思われます 私がそれを使用している時点で。実際にはレンダリングされないと思います render_to_responseが返されるまで、それは 値として次のテンプレート、そうでなければ私は何らかの種類の応答が表示されます and and1 == 1の場合:テンプレート内。助言がありますか?
解決 3
ありがとう!引用符は働いた。私の考えは、値が数値であり、引用符を必要としないという事実に固執したので、私はそれを試しませんでした。
他のヒント
andor1
の値は、HTMLフォームから渡されたときの文字列であり、&quot; 1&quot; == 1
はPythonではFalseです。次を試してください:
try:
andor1 = int(request.POST['andor1'])
except (KeyError, ValueError):
andor1 = 0
これは整数であり、以下のチェック( if andor1 == 1
)は成功するはずです。
文字列の代替テスト:
if andor1 == "1":
...
dpasteコード: http://dpaste.com/10899/
所属していません StackOverflow