Django中QualificationApproval外键qtitle赋值报错要求为Qualification实例
问题原因
你在给QualificationApproval对象的字段赋值时,每行赋值语句末尾多写了英文逗号,Python会将末尾带逗号的单个值自动封装为单元素元组。报错信息里的(<Qualification: Qualification object (1)>,)外层括号和末尾逗号,就说明你实际赋值的是元组,而非qtitle字段要求的Qualification实例。你打印的是赋值前原有字段的类型,自然符合要求,问题出在新赋值的内容类型不匹配。
解决方法
删除循环内所有赋值语句末尾的多余逗号即可,同时补充j变量的自增逻辑,避免每次循环都修改同一个对象:
if q: qua = Qualification.objects.get(pk = q.split(',')[0]) print(type(qa[j].qtitle)) # 移除所有赋值语句末尾的逗号 qa[j].qtitle = qua qa[j].ofEqualCode = code[j] qa[j].porposDate = pdate[j] qa[j].anNo = anticipated[j] qa[j].sec9 = sec9 qa[j].save() # 新增j自增逻辑,指向下一个待修改的对象 j += 1
额外提示:建议增加索引边界判断,避免j超出qa查询集的长度触发索引越界错误;如果anticipated字段提交的是字符串类型,需要先转为整型再赋值给anNo字段,避免触发类型错误。
内容的提问来源于stack exchange,提问作者Habib Ur Rehman
相关产品推荐
相关产品推荐

