gpt4 book ai didi

python - Django中QuerySet过滤器中的反向外键

转载 作者:行者123 更新时间:2023-12-04 10:03:30 25 4
gpt4 key购买 nike

假设我有两个模型:

class Human(models.Model):
name= models.CharField(#...

class Jacket(models.Model):
owner = models.ForeignKey(Human, #...
所以,感谢 this question我知道我可以通过以下方式获得所有人类夹克: human_object.jacket_set现在我想得到一个包含所有拥有夹克的人类的查询集。
灵感来自 this question ,我试过这样的事情,
Human.objects.exclude(jacket__set=None)
但如果那行得通,我就不会在这里了。

最佳答案

可以获取Human的查询集s 拥有(至少)一个 Jacket和:

Human.objects.filter(jacket__isnull=False).distinct()

这是有效的,因为我们制作了一个 LEFT OUTER JOINJacket模型,我们过滤掉那些没有相关的 Jacketjacket__isnull=False .通过使用 .distinct()我们防止相同的 Human多次返回(每个相关 Jacket 一次)。

在查询中它使用 related_name_query引用相关对象,默认情况下是小写的模型名称。万一 related_name指定,它将使用 related_name .

关于python - Django中QuerySet过滤器中的反向外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712605/

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