Django查询问题

时间:2010-04-04 03:15:57

标签: django many-to-many intersection django-queryset

如果我在Django中有两个不同的QuerySet,它们都表示与同一模型的ManyToMany关系,我将如何找到交叉点?

3 个答案:

答案 0 :(得分:1)

您可以通过使用IN运算符来创建子查询来避免这个问题: http://docs.djangoproject.com/en/dev/ref/models/querysets/#in

答案 1 :(得分:0)

将您的查询集合并到列表中,然后创建一个集合,您将转换回列表:

from itertools import chain
merged_qs = chain(queryset1, queryset2) 
intersection_list = list(set(list( merged_qs )))

答案 2 :(得分:0)

  1. 按同一组密钥订购查询集
  2. 在两个querysets上调用iterator()
  3. 从此回答中将迭代器提供给 intersect 函数: Joining a set of ordered-integer yielding Python iterators