跳转至

django orm 'NoneType' object is not iterable

django orm 'NoneType' object is not iterable

1、报错截图

当小伙伴们遇到这种沙雕问题时是不是也是很烦躁? django

2、分析Traceback

发现有熟悉的,我重写了admin.ModelAdmin的save_related方法,分析应该是再多对多保存时出现了问题。 django

django

3、看上去好像是scripts这个字段在保存时出现了问题。然后发现这个字段在后台也做了一个表单验证。

django 在校验scripts这个字段时,当job_type==2时没有对应的返回,所以job_type==1每次都成功了,2都是失败的。

4、clean_ < fieldname >()

方法是在表单子类上调用的——其中 < fieldname > 被替换为表单字段属性的名称。这个方法做任何特定属性的清理工作,与字段的类型无关。这个方法不传递任何参数。你需要在 self.cleaned_data 中查找字段的值,并且记住,此时它将是一个 Python 对象,而不是在表单中提交的原始字符串(它将在 cleaned_data 中,因为上面的一般字段 clean() 方法已经清理了一次数据)。

例如,如果你想验证一个叫 serialnumber 的 CharField 的内容是唯一的,clean_serialnumber() 就可以做这件事。你不需要一个特定的字段(它是一个 CharField),但你需要一个特定字段的验证,可能的话,清理/规范数据。

这个方法的返回值会替换 cleaned_data 中的现有值,所以它必须是 cleaned_data 中的字段值(即使这个方法没有改变它)或一个新的干净值。

5、参考文档

https://docs.djangoproject.com/zh-hans/3.2/ref/forms/validation/



觉得有用的老铁们可以"微信"赞助一杯82年的雪碧呦。
txtddd
本文阅读量  次

评论