通用的例子.当我这样做一个查询
a = MyObject.objects.filter(...)
a将包含过滤器匹配的所有内容.当我这样做时:
a.filter(...)
a只包含与两个过滤器匹配的对象,对吧?所以在第一个filter()之后,我可能有5个元素,然后在第二个filter()之后我可能剩下5个中的2个?
>>> Item.objects.filter(account__in=Account.objects.filter(customer=a),disabled=False)
[
这产生了一个结果.请记住,100396是主键,因此只有一个具有此idnetifier的Item.现在,当我应用一个额外的过滤器时,该过滤器应仅显示已禁用的发票上的项目或没有发票:
>>> Item.objects.filter(account__in=Account.objects.filter(customer=a),disabled=False).filter(Q(iteminv__invoice__disabled=False) | Q(iteminv__isnull=True))
[
我用同一个对象得到这个结果两次……这怎么可能?我误解了什么吗?
将它全部放在一个filter()中会产生相同的奇怪输出:
>>> Item.objects.filter(Q(account__in=Account.objects.filter(customer=a)),Q(disabled=False),Q(iteminv__invoice__disabled=False) | Q(iteminv__isnull=True))
[
Django版本1.6.2
最佳答案
原文链接:https://www.f2er.com/mysql/433702.html