我有一个Django管理表单,它有一个已知的错误源,可以防止表单被保存。我检查了模型中的所有字段,并填写了所有必填字段。不过,我继续收到标准错误消息:
Please correct the error below.
位于表单顶部,但没有突出显示错误消息的字段。
可能是另一个原因,我该如何调试?
答案 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中,也没有显示错误。