有两个形成的QuerySet,要形成最终的QuerySet,但只出现在这里和那里。即找到与 Q 的交集。下面是一个带有常规列表的示例,以了解我的意思。
意见
filter = 'sometext'
list1 = Orders.objects.filter(device__in=filter).values_list('related_uuid')
list2 = Clients.objects.filter(name__in=filter).values_list('related_uuid')
conds = Q(related_uuid__in=list1) | Q(related_uuid__in=list2)
return Orders.objects.filter(conds)
# выводит все вхождения list1 и list2, а надо пересечения
c 列出输出示例以便理解:
list1 = [1,2,3]
list2 = [4,5,1]
conds = Q(related_uuid__in=list1) | Q(related_uuid__in=list2)
return Orders.objects.filter(conds)
# вывод только записи 1
# пример не рабочий, просто для понимания, что мне надо найти пересечения
只有值需要打印1
,因为它出现在两者中list
。怎么办Q
?
我推荐阅读Django Q Operations。你甚至可以从旧版本翻译,没有什么真正改变