@dimash07

Как получить записи где айдишники внутри массива?

Доброго времени суток! Имеются два объекта match, team
class Match(models.Model):
      .....

class Team(models.Model):
      match = models.ForeignKey(Match, related_name="command", on_delete=models.CASCADE)
      .....


Есть массив из айдишек команд, arr = [2, 6]

Задача получить все матчи в которых участвуют только команды из массива arr.
Match.objects.filter(command__in=arr).distinct() выводит все матчи где есть совпадение хоть одного элемента. Как правильно написать запрос, чтобы выводил только те матчи в которых есть только эти команды?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@pyHammer
from django.models.db import Q
ids = [2, 6]
q = Q()
for id in ids:
    q &= Q(command__id=id)
qs = Match.objects.filter(q).distinct()

Хотя этот код рассчитан на то, что у вас ids может быть любого размера. В случае вашем проще сделать так:
from django.models.db import Q
Match.objects.filter(Q(command__id=arr[0]) & Q(command__id=arr[1])).distinct()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы