2

3つのドロップダウン選択ボックスがあります。これは、Webの可視性の理由から、size=''オプションを使用して展開する必要があります。各ボックスからオプションを選択するとエラーは発生しませんが、1つ以上のボックスを選択せず​​に残すと、エラーが発生します。

<select id="pathology_id" name="pathology_id" size="5">
    {% for pathology in pathology_list %}
    <option value="{{ pathology.id }}">{{ pathology.pathology }}</option>
    {% endfor %}
</select>

<select id="commodity_id" name="commodity_id" size="5">
    {% for commodity in commodity_list %}
    <option value="{{ commodity.id }}">{{ commodity.commodity }}</option>
    {% endfor %}
</select>

<select id="technology_id" name="technology_id" size="5">
    {% for technology in technology_list %}
    <option value="{{ technology.id }}">{{ technology.technology }}</option>
    {% endfor %}
</select>

ERROR:
MultiValueDictKeyError
Exception Value:    

"Key 'pathology_id' not found in <QueryDict: {u'q': [u''],

選択のないドロップダウンボックスを受け入れるようにビューをコーディングするにはどうすればよいですか?

4

1 に答える 1

1

リストのいずれかが空の場合は、forループをifステートメントで囲むことができます。

例えば、

{% if technology_list %}
    {% for technology in technology_list %} {{ technology.technology }} {% endfor %}
{% endif %}

最後に、ビューで、投稿されたアイテムがリクエストディクショナリにあるかどうかを確認できます。

if 'technology' in request.POST:
    tech = request.POST['technology']

-----更新-----

まず、これを行うにはおそらくdjangoフォームを使用する必要があります。次に、stackoverflowを使用して特定の質問をする必要があります。コードを修正する方法として使用しないでください。

最後に、次の行でエラーがスローされたようです。

pathology_id = request.GET['pathology_id']

問題は、キー'pathology_id'がGETディクショナリ内にないことです。このフィールドのデフォルト値がある場合は、次のように実行できます。

pathology_id = 'default_value'
if 'pathology_id' in request.GET:
    pathology_id = request.GET['pathology_id']

そうしないと、デフォルト値がない場合、IDなしでPathologyオブジェクトを取得することはできません。何も選択されていない場合は、ケースを処理する必要があります。

if 'pathology_id' in request.GET:
    pathology_id = request.GET['pathology_id']

    #rest of your code

else:
    #code when no pathology_id is selected
于 2009-05-30T14:51:57.597 に答える