假设我有以下由表中的节点表示的非常简单的树结构:
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 查询吗?
谢谢,
-B