如何基于具有一个共同对象的两个多人关系来过滤查询集?

时间:2013-06-02 20:05:33

标签: python django django-queryset

假设我有一个动物的查询集,我想编写一个查询,确定另一个模型上的多个字段是否至少有一个与动物查询集相同的对象。如何实现这一目标?

farm_animals = Animals.objects.filter(name__in=["Dog", "Cow", "Horse"])

print farm_animals # [<Animal: Dog>, <Animal: Cow>, <Animal: Horse>]

# Returns all people who have at least one farm animal.
people_with_a_farm_animal = People.objects.filter(???)

这看起来应该很容易,但我很难找到一种有效的方法来做到这一点。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

正如danihp所指出的,如果People对象有owned_animals字段,请尝试people_with_a_farm_animal = People.objects.filter( owned_animals__in=farm_animals).distinct()