Django管理表单上未显示的字段中的错误

时间:2014-01-17 02:59:25

标签: python django django-forms django-admin

我有一个Django管理表单,它有一个已知的错误源,可以防止表单被保存。我检查了模型中的所有字段,并填写了所有必填字段。不过,我继续收到标准错误消息:

Please correct the error below.

位于表单顶部,但没有突出显示错误消息的字段。

可能是另一个原因,我该如何调试?

2 个答案:

答案 0 :(得分: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

然后将def:

添加到表单类中
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()

验证失败,因为这些字段没有所需的值。将字段定义更改为include required = False修复了问题:

get_num_items = forms.IntegerField(required=False)

答案 1 :(得分:0)

我遇到了同样的问题。对我来说,这是一个带有auto_now_add的DateTimeField我强制数据库中的值,但是Django的格式不正确,因为标记为auto_now_add的字段没有显示在admin中,也没有显示错误。

相关问题