[英]Django Inner Join Queryset
我正在使用 Django,我需要使用两个内部连接来做一个查询集。
我有三个模型 A、B 和 C,我想在 psql 中执行如下查询:
SELECT DISTINCT a FROM A
INNER JOIN B ON B.a_id = A.id
INNER JOIN C ON C.b_id = B.id;
型号:(只包含相关字段)
class A(models.Model):
id = models.IntegerField(primary_key=True)
class B(models.Model):
id = models.IntegerField(primary_key=True)
a = models.ForeignKey(A, null=True, blank=True,on_delete=models.SET_NULL)
class C(models.Model):
b = models.ForeignKey(B, null=True, on_delete=models.SET_NULL)
因此,C 中的所有内容都链接回 B 中的一件事,B 中的所有内容都链接回 A 中的一件事。我想尝试获取 A 中所有在 C 中具有某些内容的不同元素。
我如何使用 django 查询集来做到这一点? 谢谢。
A.objects.filter(b__c__isnull=False)
结果一个 sql w/相同的结果:
SELECT DISTINCT a.* FROM a
INNER JOIN b ON (a.id = b.a_id)
INNER JOIN c ON (b.id=c.b_id)
WHERE c.id IS NOT NULL;
PS 为什么您使用IntegerField
而不是AutoField
作为 ID?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.