问题
I am using Django to develop a course registration site for an educational institution.
Suppose I have two Django query sets, one that comprises of courses that occupy session 1 (set A) and one that comprises of courses in session 2 (set B):
A = session1.courses.all()
B = session2.courses.all()
There is much overlap between these two query sets.
What is an efficient way to obtain the set of courses within set B, but not in set A?
I believe this is equivalent to taking out the intersection of the two sets from set B.
Thank you!
回答1:
A.exclude(pk__in = B)
should work
回答2:
Starting from version 1.11, django query sets have a builtin difference method.
C = A.difference(B) #A-B
See my blog post on this for more detailed use cases.
来源:https://stackoverflow.com/questions/8867743/how-does-one-find-the-entities-in-a-django-query-set-that-are-not-in-another-spe