我有一个Django管理员表单,它有一个已知的错误源,可以防止表单被保存。我检查了模型中的所有字段,并填写了所有必填字段。尽管如此,我继续得到标准的错误消息:Django管理员表单中显示的字段中的错误
Please correct the error below.
在窗体顶部,但没有字段是用一个错误信息突出显示。
什么可能是另一个原因,我该如何调试?
我有一个Django管理员表单,它有一个已知的错误源,可以防止表单被保存。我检查了模型中的所有字段,并填写了所有必填字段。尽管如此,我继续得到标准的错误消息:Django管理员表单中显示的字段中的错误
Please correct the error below.
在窗体顶部,但没有字段是用一个错误信息突出显示。
什么可能是另一个原因,我该如何调试?
这里是你如何看到隐藏的错误。上述表单类(创建一个如果它不存在),添加这些进口:
# 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)
我遇到了同样的问题。对我来说,它是一个带有auto_now_add的DateTimeField,它强制数据库中的值,但是对于Django来说这种格式不被认为是正确的,并且由于标记为auto_now_add的字段没有显示在管理中,所以也不显示错误。
要添加到可能的原因 - 我包含内置的自定义模板覆盖字段只显示一些额外的,但只读的信息时出现此错误。我通过将字段明确地列为只读字段来修正它,所以视图逻辑知道不要期待它们。 – nimasmi