2012-01-25 13 views
0

私は選択ボックスを無効にしたフォームを持っています。私はUpdateForm()でこの機能を持っている:djangoの無効な選択ボックスのキーを定義します

def clean_job(self): 
    f = self.fields['job'].widget.attrs 
    if f.has_key('disabled') and f['disabled'] == 'disabled' : 
     return self.instance.job 
    else: 
     return self.cleaned_data['job'] 

をしかし、フォームを送信するとき、私はこのエラーを持っている:​​ にはどうすれば無効に選択ボックスのキーを割り当てることができますか?事前

+1

をhttp://www.w3.org/TR/html4/interact/forms([無効]のフィールドは、サーバーにポストされていません]。 html#h-17.12.1)。このエラーはここでは表示されませんが、 'request.POST ['job']'にアクセスしているところです。完全なトレースバックを投稿すると便利です。 – AdamKG

+0

無効なフィールドはサーバーには送信されませんが、サーバーに値を送信する必要があり、無効なselectboxのキーを定義する必要があります(ユーザーはジョブを編集できず、ジョブの値は古いジョブである必要があります) – TheNone

+1

ジョブIDを隠しフィールドとして使用し、無効なselectを使用して表示しないでください。テンプレートの値をレンダリングするだけです。 – AdamKG

答えて

1

おかげであなたは、サーバーにjobのために何かを送る送信するを持っていないありません。 は、コード内の例外を適切に処理するためにを使用しています。辞書に直接アクセスすると、そのキーが存在しない場合はエラーになります。そのキーは存在しません。代わりに、この場合はgetメソッドを使用するか、QueryDictを使用してください。

job = request.POST.get('job') # stores `None` if doesn't exist 
if job is not None: 
    # do something 

それとも、デフォルト値を提供することができます

job = request.POST.get('job', 'default job') 
関連する問題