2014-01-17 85 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的字段没有显示在管理中,所以也不显示错误。

相关问题