Как найти сущности в наборе запросов Django, которых нет в другом указанном наборе запросов? - PullRequest
4 голосов
/ 15 января 2012

Я использую Django для разработки сайта регистрации курса для образовательного учреждения.

Предположим, у меня есть два набора запросов Django, один из которых состоит из курсов, которые занимают 1-й сеанс (набор A), а другой - изкурсы в сеансе 2 (набор B):

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

Между этими двумя наборами запросов много общего.

Какой эффективный способ получить набор курсов в наборе B, ноне в наборе A?

Полагаю, это эквивалентно удалению пересечения двух множеств из множества B.

Спасибо!

Ответы [ 2 ]

15 голосов
/ 15 января 2012

A.exclude(pk__in = B) должно работать

1 голос
/ 09 августа 2017

Начиная с версии 1.11 , наборы запросов django имеют встроенный метод различий.

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

См. Мой пост в блоге по этому вопросу для более подробных примеров использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...