2012-01-25 41 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

我知道被禁用的字段不會發布到服務器,但我必須向服務器發送一個值,並且必須爲禁用的選擇框定義一個鍵(用戶不能編輯作業並且作業值必須是舊作業) – TheNone

+1

因此,包括作業ID作爲隱藏字段,並且不要使用禁用的選擇來顯示它 - 只需在模板中呈現該值即可。 – 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')