2009-05-30 12 views
2

私は3つのドロップダウン選択ボックスを持っています。これは、Web可視性の理由から、size = ''オプションで拡張する必要があります。私は各ボックスからオプションを選択した場合、私は何のエラーを受信しないが、私は選択せずに、1つの以上のボックスを残せば、私はエラーが表示されます。Django選択ボックスサイズオプション

<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''], 

なし持つドロップダウンボックスを受け入れるようにビューをコーディングする方法選択?

答えて

1

あなたのリストが空であれば、ifステートメントでforループを囲むことができます。例えば

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

最後には、ビューでは、あなたが掲示項目が要求辞書にあるかを確認することができます。

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

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

まず第一に、あなたはおそらくこれを行うにはdjango formsを使用する必要があります。次に、特定の質問をするために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なし病理オブジェクトを取得することはできません:あなたはこのフィールドのデフォルト値を持っている場合、あなたはこのような何かを行うことができます。何も選択されていない場合は、ケースを処理する必要があります。

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

    #rest of your code 

else: 
    #code when no pathology_id is selected 
関連する問題