如何在Django查询集中找到不在另一个指定查询集中的实体?

时间:2012-01-15 05:31:37

标签: django django-queryset

我正在使用Django为教育机构开发课程注册网站。

假设我有两个Django查询集,一个包含占用会话1(集合A)的课程,另一个包含会话2中的课程(集合B):

A = session1.courses.all()
B = session2.courses.all()

这两个查询集之间有很多重叠。

在集合B中获取课程集的有效方法是什么,但在集合A中没有?

我相信这相当于从集合B中取出两组的交集。

谢谢!

2 个答案:

答案 0 :(得分:15)

A.exclude(pk__in = B)应该有效

答案 1 :(得分:1)

version 1.11开始,django查询集具有内置差异方法。

   C = A.difference(B) #A-B

有关更详细的用例,请参阅我的blog post