bab*_*eir 4 django django-queryset
我保持简单。我有 3 个型号。
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)
Run Code Online (Sandbox Code Playgroud)
我需要一个获取 Aabsome_field = True 的查询过滤器。我怎样才能做到这一点?
您可以使用以下方法过滤A满足此条件的对象:
A.objects.filter(a__b__some_field=True)Run Code Online (Sandbox Code Playgroud)
这将生成一个查询,或多或少类似于:
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
Run Code Online (Sandbox Code Playgroud)
双下划线 ( __) 可用于“查看”关系(如ForeignKeys、OneToOneFields 和ManyToManyFields)。如果是...对多字段,则这是存在量化的。但这里的ForeignKeys 是多对一的关系,所以这并不重要。
注意:
ForeignKeys toB(orC) 通常命名为b(orc),而不是a(orb),因为这是当前模型的名称。关系的名称通常指定其目标对象与当前模型的关系。
| 归档时间: |
|
| 查看次数: |
1104 次 |
| 最近记录: |