0

私が取り組んでいるプロジェクトでは、selectタグをoptionデフォルトで特定のものにする必要があります。変数を特定の数値に設定すると、ページの読み込み時に対応するオプションが選択されるようにしようとしています。何らかの理由で、オプションが変数と同じかどうかを判断するために使用しているコードは、常に false を返します。

View.py

@login_required
def display_work(request, id, chapter = 1):
    info = dict()
    work = Work.objects.get(id = id)
    chapters = Chapter.objects.filter(work = id).order_by("order_number")
    info['title'] = work.title
    info['summery'] = work.summery
    info['current_chapter'] = chapter # the number the options are compared to
    print chapter
    info['id'] = id
    num_chapters = 0
    chapter_list = []
    for c in chapters:
        temp = (c.title, c.order_number) # where the numbering for the options is set (see template code)
        chapter_list.append(temp)
        num_chapters += 1
    info['total_chapter'] = num_chapters
    content = chapters[int(chapter)-1].content
    return render_to_response("SubMain/display_work.html", {'STATIC_URL':STATIC_URL, "info":info, "chapters": chapter_list, "content": content})

テンプレート: テンプレートは、作成するオプションが現在の章であるかどうかを確認しながら、リスト全体を実行します。もしそうなら、それを「選択」する必要があります。

{% for t, o in chapters %}
<option value="/work/{{ info.id }}/{{ o }}" {% if o == info.current_chapter %} selected="selected" {% endif %}>Chapter {{ o }}: {{ t }}</option>
{% endfor %}

しかし、コードを実行するたびに、何も選択されません (if タグにあるものがあります)。私が行ったデバッグを通じて、それoが 2 であり、2 であることも確認しましinfo.current_chapterた。

4

2 に答える 2

1

テンプレートでは、「==」の代わりに単一の「=」操作を使用してみてください。

<option value="/work/{{ info.id }}/{{ o }}" {% if o = info.current_chapter %} selected="selected" {% endif %}>Chapter {{ o }}: {{ t }}</option>
于 2012-11-24T05:52:36.453 に答える
1

試すifequal

 {% for t, o in chapters %}
    <option value="/work/{{ info.id }}/{{ o }}" {% ifequal o info.current_chapter %} selected="selected" {% endifequal %}>Chapter {{ o }}: {{ t }}</option>
    {% endfor %}
于 2012-11-24T07:42:34.183 に答える