在关系的一侧的子集上查询ManyToMany关系

时间:2015-09-25 15:50:41

标签: python mysql django many-to-many relational-database

假设我在EnvironmentAnimal之间有一个ManyToMany关系,加入表看起来像:

environment_id  animal_id
1               1
1               2
1               3
2               1
2               3
3               2
3               4
3               5
4               2
4               3
5               2
5               4

假设我有一组标识为Animal的{​​{1}},我如何查询数据库以返回那些只与这些动物相关的子集的环境?在此示例中,(1,2,3)有{ids Environments但不是(1,2,4)3。 如果我尝试:

5

显然这不起作用,因为他们都有至少一个来自我子集的动物。

模型类基本上是:

animals = Animal.objects.filter(id__in=(1,2,3))
animal_list = AnimalList.objects.filter(animal__in=animals)

1 个答案:

答案 0 :(得分:0)

Documentation of pk-lookup-shortcut

animals = Animal.objects.filter(id__in=[1,2,3])