簡體   English   中英

我怎樣才能 select 連接兩個不同表中的兩個字段 Django ?

[英]How can I select two fields from two different tables in a Django join?

假設我有以下非常簡單的樹結構,由表中的節點表示:

class Nodes(models.Model):
    name = models.CharField(max_length=50)
    flags = models.CharField(max_length=50)
    parent = models.ForeignKey('self')

我想知道的是,如何在 Django 中模擬以下 SQL 語句?

SELECT parent.name, child.name
FROM Nodes as child
JOIN Nodes as parent ON child.parent == parent.id
WHERE parent.flags == 'STRING1' AND child.flags == 'STRING2';

我得到的最接近的似乎效率很低:

for parent in Nodes.objects.filter(flags='STRING1'):
    for child in Nodes.objects.filter(flags='STRING2', parent=parent.id):
        print parent.name, child.name

有人可以幫助我了解是否有更好的方法來執行此 SQL 查詢嗎?

謝謝,
-乙

試試這個:

for node in Nodes.objects.filter(flags='STRING2', parent__flags='STRING1'):
    print node.parent.name, node.name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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