簡體   English   中英

Django 內連接查詢集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM