我的模型的相关图片在这里:http://i.stack.imgur.com/xzsVU.png
我需要创建一个查询集,其中包含所有具有角色为“所有者”且名称为“bob”的关联人员的猫。
这个的sql如下所示。
select * from cat where exists
(select 1 from person inner join role where
person.name="bob" and role.name="owner");
使用以下django过滤器可以在两个sql查询中解决此问题。
people = Person.objects.filter(name="bob", role__name="owner")
ids = [p.id for p in people]
cats = Cat.objects.filter(id__in=ids)
我的实际设置比这更复杂,并且正在处理大型数据集。有没有办法用一个查询来做到这一点?如果不可能,那么有效的替代方案是什么?
答案 0 :(得分:5)
我很确定这是您的查询:
cats = Cat.objects.filter(person__name='bob', person__role__name='owner')