2012-01-15 62 views
4

我正在使用Django爲教育機構開發課程註冊網站。如何找到不在另一個指定查詢集中的Django查詢集中的實體?

假設我有兩個Django的查詢集,一個包括佔據會話1(組A)和一種的課程,包括在會話2(組B)的課程:

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

有許多重疊這兩個查詢集之間。

什麼是有效的方式來獲得集B內的課程,但不是在集A?

我相信這相當於從集合B中取出兩個集合的交集

謝謝!

+0

從版本1.11開始,django查詢集有一個內置的差異方法。我已經添加了它作爲未來參考的答案 – 2017-08-09 02:05:03

回答

14

A.exclude(pk__in = B)應該工作

+1

謝謝,這是訣竅! – dangerChihuahua007 2012-01-17 20:57:07

+0

偉大的方法謝謝 – soField 2014-01-19 21:48:20

1

version 1.11開始,Django的查詢集有一個內置差分方法。

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

請參閱我的blog post瞭解更多詳細用例。