2014-01-17 95 views
2

我有一個Django管理員表單,它有一個已知的錯誤源,可以防止表單被保存。我檢查了模型中的所有字段,並填寫了所有必填字段。儘管如此,我繼續得到標準的錯誤消息:Django管理員表單中顯示的字段中的錯誤

Please correct the error below. 

在窗體頂部,但沒有字段是用一個錯誤信息突出顯示。

什麼可能是另一個原因,我該如何調試?

回答

5

這裏是你如何看到隱藏的錯誤。上述表單類(創建一個如果它不存在),添加這些進口:

# get a way to log the errors: 
import logging 
log = logging.getLogger(__name__) 
# convert the errors to text 
from django.utils.encoding import force_text 

然後添加到您的窗體類此防守力:

class MyAdminForm(forms.ModelForm): 

    def is_valid(self): 
     log.info(force_text(self.errors)) 
     return super(MyAdminForm, self).is_valid() 

當你檢查你的日誌後提交再次,它會列出所有隱藏的錯誤。

當我有這個問題,我找到了錯誤的原因是,我已經添加到表單中的一些「計算」只讀領域,如:

get_num_items = forms.IntegerField() 

驗證,因爲這些領域有失敗沒有要求的價值。將字段定義更改爲包含required = False修復問題:

get_num_items = forms.IntegerField(required=False) 
+0

要添加到可能的原因 - 我包含內置的自定義模板覆蓋字段只顯示一些額外的,但只讀的信息時出現此錯誤。我通過將字段明確地列爲只讀字段來修正它,所以視圖邏輯知道不要期待它們。 – nimasmi

0

我遇到了同樣的問題。對我來說,它是一個帶有auto_now_add的DateTimeField,它強制數據庫中的值,但是對於Django來說這種格式不被認爲是正確的,並且由於標記爲auto_now_add的字段沒有顯示在管理中,所以也不顯示錯誤。

相關問題