码迷,mamicode.com
首页 > 其他好文 > 详细

[Django](1093, "You can't specify target table 'fee_details_invoices' for update in FROM clause") 错误

时间:2016-01-18 13:48:12      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

dele_id = Fee_details_invoices.objects.filter(fee_detail_id__in=fee_id_list, return_type='2').values_list('fee_detail_id', flat=True)
Fee_details_invoices.objects.filter(fee_detail_id__in=dele_id).delete()

报错:

django.db.utils.DatabaseError: (1093, "You can't specify target table 'fee_details_invoices' for update in FROM clause")

错误分析解决:

第一行代码的意思是获取某些条件行的某个字段

第二行代码去删除这些行包括这个字段值的记录

?

依照文档第一行代码返回的应该是一个list啊  见文档

>>> Entry.objects.values_list(‘id‘, flat=True).order_by(‘id‘)
[1, 2, 3, ...]

第二行代码的输入參数也是一个list啊 见文档

Entry.objects.filter(id__in=[1, 3, 4])


为啥错了呢?

通过debug看到dele_id的结果把

dele_id
[]
type(dele_id)
<class 'django.db.models.query.ValuesListQuerySet'>

看到了把,尽管打印出来是个list的样子,事实上不是list类型

解决:第二行语句把dele_id强转即可了

Fee_details_invoices.objects.filter(fee_detail_id__in=list(dele_id)).delete()

有时候是不能看表象的。

即使是动态语言,类型不一致也会出现非常多坑。


[Django](1093, &quot;You can&#39;t specify target table &#39;fee_details_invoices&#39; for update in FROM clause&quot;) 错误

标签:

原文地址:http://www.cnblogs.com/mengfanrong/p/5138946.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!