Найти - Пользователи
Полная версия: AND для M2M
Начало » Django » AND для M2M
1
Lolka
Есть две модели
class Genre(models.Model):
...

class Film(models.Model):
genres = models.ManyToManyField(Genre)
Чтобы выбрать фильмы, которые есть хотя бы в одном из жанров (т.е. ИЛИ id=1 или id=2) можно написать Film.objects.filter(genres__id__in=), а как выбрать фильмы, которые есть в каждом из требуемых жанров (т.е. И id=1, id=2)?
regall
Lolka
Чтобы выбрать фильмы, которые есть хотя бы в одном из жанров (т.е. ИЛИ id=1 или id=2) можно написать Film.objects.filter(genres__id__in=), а как выбрать фильмы, которые есть в каждом из требуемых жанров (т.е. И id=1, id=2)?
from django.db.models import Q
Film.objects.filter(Q(genres__id=1) & Q(genres__id=2))
Lolka
Не получается, возвращает 0 записей. Получается так: Film.objects.filter(genres__id=1).filter(genres__id=2)
Как быть?
svas
Lolka
Не получается, возвращает 0 записей.
Ну так значит нет фильмов принадлежащих одновременно жанрам с id 1 и 2
Lolka
Есть :) Такой чейн его возвращает: Film.objects.filter(genres__id=1).filter(genres__id=2)
svas
Да, действительно, так не работает
Film.objects.filter(Q(genres__id=1) & Q(genres__id=2))
regall
Film.objects.filter(Q(genres__id=1), Q(genres__id=2))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB