Джанго задает вопрос

Если бы у меня было два разных набора запросов в Django, представляющих отношение ManyToMany с одной и той же моделью, как бы я нашел пересечения?


person veered    schedule 04.04.2010    source источник


Ответы (3)


Объедините свои наборы запросов в список, а затем создайте набор, который вы преобразуете обратно в список:

from itertools import chain
merged_qs = chain(queryset1, queryset2) 
intersection_list = list(set(list( merged_qs )))
person Pierre-Jean Coudert    schedule 04.04.2010

Вы можете избежать вопроса, используя оператор IN для создания подзапроса: http://docs.djangoproject.com/en/dev/ref/models/querysets/#in

person mlissner    schedule 20.04.2010

  1. упорядочить наборы запросов по одному и тому же набору ключей
  2. вызовите итератор() для обоих наборов запросов
  3. передать итераторы функции intersect из этого ответа: Объединение набора упорядоченных целых чисел, дающих итераторы Python
person Yaroslav    schedule 05.04.2010