前提・実現したいこと
formの選択肢を作る際に、
djangoでのhtmlで、
自分で定義したtagをforを使って呼びつつ、同時にrequestを引数にしたい
発生している問題・エラーメッセージ
requestと、forが同時には使えないようです。
TemplateSyntaxError at /diaries/post/ 'for' statements should use the format 'for x in y': for books in render_books request
該当のソースコード
diary.py
python
1 2@register.simple_tag 3def render_books(request): 4 return Book.objects.filter(grouptobook__in =request.user.groups.all()).values_list('id', 'grouptobook__name') 5 6
post.html
formの選択肢の部分です
html
1{% load diary %} 2<div class="field"> 3<label for="id_belong">Bookへの所属:</label> 4<select name="belong" required id="id_belong"> 5{% for books in render_books request %} 6 <option value="{{ books.0 }}">{{ books.1 }}</option> 7{% endfor %} 8</select> 9</div> 10 11
##試したこと1
html
1{% load diary %} 2{% render_books request %}
これで、呼び出したいQuerySetが呼び出せていることは確認できました。
<QuerySet [(1, '1234×default'), (2, '5678×default')]>
##試したこと2
html
1{% load diary %} 2 3<select name="belong" required id="id_belong"> 4 <option value="1">1234×default</option> 5 <option value="2">5678×default</option> 6</select>
このようにforを使わずに入力すると、正常に動作することも確認ずみです。
##試したこと3
html
1{% load diary %} 2 3<select name="belong" required id="id_belong"> 4{% for books in render_books %} 5 <option value="{{ books.0 }}">{{ books.1 }}</option> 6{% endfor %} 7</select>
requestを外すと、エラーは出ませんが、選択肢が何も表示されません。
補足情報(FW/ツールのバージョンなど)
Python 3.7.4
Mac OS Mojave
プログラミング歴3週間で、色々わかっていないので、情報不足等があったら申し訳ありませんがご指摘ください。
あなたの回答
tips
プレビュー