问题描述
我保持简单。我有3个模型。
I keep it simple. I have 3 models.
class C(models.model):
some_field = models.BooleanField(default=False)
class B(models.model):
b = models.ForeignKey(C)
class A(models.model):
a = models.ForeignKey(B)
我需要一个查询过滤器,该过滤器的Aabsome_field = True。我该如何实现?
I need a query filter that gets A.a.b.some_field = True. how can I achieve this ?
推荐答案
您可以过滤 A
对象满足以下条件的情况:
You can filter your A
objects that satisfy this condition with:
A.objects.filter(a__b__some_field=True)
这将生成一个看起来或多或少像的查询:
This will generate a query that looks, more or less like:
SELECT a.*
FROM a
JOIN b ON a.a_id = b.id
JOIN c ON b.b_id = c.id
WHERE c.some_field = 1
双下划线( __
)可用于查找直通关系(例如 ForeignKey
s, OneToOneField
s和 ManyToManyField
s)。如果是...- to-many字段,则存在进行量化。但是这里 ForeignKey
是多对一的关系,所以没关系。
The double underscore (__
) can be used to look "through" relations (like ForeignKey
s, OneToOneField
s and ManyToManyField
s). In case it is ...-to-many field, this is existentially quantified. But here the ForeignKey
s are many-to-one relations, so that does not matter.
这篇关于嵌套查询过滤器_ Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!