use*_*511 14 python django inner-join django-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)
Run Code Online (Sandbox Code Playgroud)
因此,C中的所有内容都链接回B中的一个内容,而B中的所有内容都链接回A中的一个内容.我想尝试获取A中具有C语言内容的所有不同元素.
如何使用django queryset执行此操作?谢谢.
okm*_*okm 26
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;
Run Code Online (Sandbox Code Playgroud)
PS为什么使用IntegerField而不是AutoFieldids?
| 归档时间: |
|
| 查看次数: |
18942 次 |
| 最近记录: |