Соответствующее изображение моей модели здесь: http://i.stack.imgur.com/xzsVU.png
Мне нужно создать набор запросов, который содержит всех кошек, у которых есть связанный человек с ролью «владелец» и именем «боб».
sql для этого будет показано ниже.
select * from cat where exists
(select 1 from person inner join role where
person.name="bob" and role.name="owner");
Эта проблема может быть решена в двух запросах sql со следующими фильтрами django.
people = Person.objects.filter(name="bob", role__name="owner")
ids = [p.id for p in people]
cats = Cat.objects.filter(id__in=ids)
Моя фактическая установка более сложна, чем эта, и имеет дело с большим набором данных. Есть ли способ сделать это с помощью одного запроса? Если это невозможно, какова эффективная альтернатива?