1

私はPythonを学んでいます。ドロップダウンからの複数の選択に基づいて結果を表示したいと思います。

次のコードは機能しており、1 つのドロップダウンに対して正しい結果を返しています。できれば複数のドロップダウンを少なくとももう 1 つ追加したいと思いますが、複数の変数を渡して返す方法がわかりません。

フォームコード

        <p> <form method="get" action="">

            <select name="search3">
                {% for cs in course_list %}
                    <option value="{{ cs.pk }}">{{ cs.name }}</option>
                {% endfor %}
            </select>
            <br/><br/>

            <input type=submit value="Find staff" />
            </form>
    </p>



    {% if employee_list %}
        {{ employee_list.count }} employees matching : <strong>{{ course }}</strong><br/><br/>
        {% for e in employee_list %}
        {% if not e.img1 %}
            <img src="/media/images/null_image.png" width="35"  title="{{ e.first_name}} {{e.surname }}" />
        {% else %}
            <img src="{{ e.img1.url }}" width="50" title="{{ e.first_name}} {{e.surname }}"/>
        {% endif %}
        <a href="/employee/{{ e.slug }}" target="_blank" rel="popup" title="Details...<br />
            {% for det in employee_list.employeedynamic_set.all %}
            {{ det.mobile }}<br />
            {{ det.depot }}<br />
            {% endfor %}
        ">&nbsp;{{ e.first_name }}&nbsp;{{ e.surname }}</a><br/>
        {% endfor %}
    {% else %}
        <p>No employees matched: <strong>{{ course }}</strong></p>
    {% endif %}

views.py コード

#   function to list training courses and participating uindividuals.
def CourseView(request):

    course_list     = Course.objects.all().order_by('name')
    if 'search3' in request.GET:
        search3     = request.GET['search3']
        course      = Course.objects.get(pk=search3)
    else:
        search3 = None
        course = None

    return render_to_response("course_display.html", {'course':course,  'course_list': course_list, 'search3': search3 })

別のドロップダウン オプションまたは複数のドロップダウン オプションを追加して結果を取得することは可能ですか。それとも、間違った木を吠えていますか?

アップデート。

1 つまたは複数の変数を関数に戻すためのコードは次のとおりです。

def CompetencyCheck(request):
    course_list = Course.objects.all()
    if 'search3' in request.GET:
        search3 = request.GET.getlist('search3')
        course = Course.objects.filter(id__in=search3).distinct().order_by()

.get()では、Web ページ フォームから渡された最後の変数のみを読み取り、関数に戻すことができます。一方、.getlist()では、1 つまたは複数の変数を返すことができます。問題の一部が解決されました。

返される名前のリストは、var1 が 4 つの名前を返し、var2 が 8 つの名前を返し、両方の変数に 1 つの共通名がある場合、11 の名前のリストが返されるという点で一意です。

返される両方の変数に共通の名前のみ、つまり1 つの名前が返されるようにします。

何か案は?

4

2 に答える 2

1

request.GETあなたの見解では辞書です。そうすることで、そのキーrequest.GET['search3']の値にアクセスしているだけです。したがって、テンプレートでは、他の要素を独自の名前で追加するだけで、送信された値を同じ方法で取得search3できるはずです。<select>request.GET

于 2013-08-23T09:20:25.553 に答える