Sco*_*ott 2 python django django-forms django-admin
我有一个Django管理表单,它有一个已知的错误源,可以防止表单被保存.我检查了模型中的所有字段,并填写了所有必填字段.不过,我继续收到标准错误消息:
Please correct the error below.
Run Code Online (Sandbox Code Playgroud)
在表单的顶部,但没有突出显示错误消息的字段.
可能是另一个原因,我该如何调试?
以下是如何查看隐藏错误的方法.在表单类之上(如果尚不存在则创建一个),添加以下导入:
# 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
Run Code Online (Sandbox Code Playgroud)
然后添加到您的表单类这个def:
class MyAdminForm(forms.ModelForm):
def is_valid(self):
log.info(force_text(self.errors))
return super(MyAdminForm, self).is_valid()
Run Code Online (Sandbox Code Playgroud)
再次提交后检查日志时,它将列出所有隐藏的错误.
当我遇到这个问题时,我发现错误的原因是我添加到表单中的一些"计算"只读字段,例如:
get_num_items = forms.IntegerField()
Run Code Online (Sandbox Code Playgroud)
验证失败,因为这些字段没有所需的值.将字段定义更改为include required = False修复了问题:
get_num_items = forms.IntegerField(required=False)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2725 次 |
最近记录: |