gpt4 book ai didi

django - 使用 Django ORM,如何在 Many 关系中过滤同一记录的两个字段?

转载 作者:行者123 更新时间:2023-11-29 14:21:31 25 4
gpt4 key购买 nike

我有一个像这样的数据库模式:

class Family(models.Model):
pass

class Child(models.Model):
family = models.ForeignKey(Family)

name = models.TextField()
age = models.IntegerField()
gender = models.CharField(max_length=1)

我想要一个查询,该查询返回有 5 岁以下男孩的家庭中的所有 child 。

我该如何表达呢?我得到的最接近的是:

# WRONG: this is no good, it will only return boys under 5, but I want all
# children in families with boys under 5.
Child.objects.filter(gender='M', age__lt=5)

# WRONG: this is no good, it is closer but will also return children in
# families with a 6yo boy and a 3yo girl.
Child.objects.filter(family__child__gender='M', family__child__age__lt=5)

最佳答案

你说你想要所有有 5 岁以下男孩的家庭的男孩这是一个很大的歧义,但我假设你想要包含至少一个 5 岁以下男孩的家庭

这会起作用:

families = Family.objects.filter(child__gender='M', child__age__lt=5).prefetch_related('child')

然后您可以遍历家庭对象以检索它们各自的 child

关于django - 使用 Django ORM,如何在 Many 关系中过滤同一记录的两个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24272455/

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