gpt4 book ai didi

python - 在关系一侧的子集上查询多对多关系

转载 作者:行者123 更新时间:2023-11-29 21:59:36 26 4
gpt4 key购买 nike

假设我在 EnvironmentAnimal 之间有一个多对多关系,连接表如下所示:

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

假设我有一组 ID 为 (1,2,3)Animal,我如何查询数据库以返回仅包含以下子集的环境这些动物与他们有关吗?在此示例中,这将是 ID 为 (1,2,4)Environments,但不是 35 。如果我尝试:

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

显然这是行不通的,因为它们都至少有我的子集中的一种动物。

模型类本质上是:

class Environment(models.Model):
name = models.CharField(max_length=250)
animals = models.ManyToManyField(Animal, through='AnimalList')

class Animal(models.Model):
name = models.CharField(max_length=200)
safe_around_david_cameron = models.BooleanField()

class AnimalList(models.Model):
environment = models.ForeighKey(Environment)
animal = models.ForeignKey(Animal)

最佳答案

Documentation of pk-lookup-shortcut

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

关于python - 在关系一侧的子集上查询多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com