django orm 'NoneType' object is not iterable
django orm 'NoneType' object is not iterable
1、报错截图
2、分析Traceback
发现有熟悉的,我重写了admin.ModelAdmin的save_related方法,分析应该是再多对多保存时出现了问题。
3、看上去好像是scripts这个字段在保存时出现了问题。然后发现这个字段在后台也做了一个表单验证。
在校验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、参考文档
本文阅读量 次