Вопрос о Джанго - PullRequest
       18

Вопрос о Джанго

2 голосов
/ 04 апреля 2010

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

Ответы [ 3 ]

1 голос
/ 20 апреля 2010

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

0 голосов
/ 06 апреля 2010
  1. упорядочить наборы запросов по тому же набору ключей
  2. вызовите iterator () для обоих наборов запросов
  3. подача итераторов к функции пересечения из этого ответа: Объединение набора упорядоченных целочисленных итераторов Python
0 голосов
/ 04 апреля 2010

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

from itertools import chain
merged_qs = chain(queryset1, queryset2) 
intersection_list = list(set(list( merged_qs )))
...