gpt4 book ai didi

Django - 使用子对象过滤查询集(外键)

转载 作者:行者123 更新时间:2023-12-01 14:40:32 25 4
gpt4 key购买 nike

我有 3 个模型,其中 2 个对应于第一个。

class Parent(models.Model):
name = models.CharField....
...

class Child1(models.Model):
parent = models.ForeignKey(Parent)
...

class Child2(models.Model):
parent = models.ForeignKey(Parent)
...

现在,在我看来,我有 2 个过滤的查询集 Child1Child2对象。

有没有办法检索所有 Parent过滤查询集中的对象?

就像是...
children1 = Child1.objects.filter(blah=blah)
children2 = Child2.objects.filter(blah=blah)
parents = Parent.objects.filter(self__in=children1 or self__in=children2)

注意 上面的代码根本不起作用,这只是想法。

最佳答案

是的:

from django.db.models import Q

children1 = Child1.objects.filter(blah=blah)
children2 = Child2.objects.filter(blah=blah)
parents = Parent.objects.filter(Q(child1__in=children1) | Q(child2__in=children2))

见文档:
  • https://docs.djangoproject.com/en/1.7/ref/models/querysets/#in
  • https://docs.djangoproject.com/en/1.7/topics/db/queries/#lookups-that-span-relationships
  • https://docs.djangoproject.com/en/1.7/topics/db/queries/#complex-lookups-with-q-objects
  • 关于Django - 使用子对象过滤查询集(外键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417613/

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