0
我有一個代表樹的邊緣上的Django模型,並表示該節點的模型:Django的select_related樹路
class Edge(models.Model):
nodeFrom = models.ForeignKey('Node', related_name='+')
nodeTo = models.ForeignKey('Node', related_name='+')
class Node(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField()
parentNode = models.ForeignKey('Node', null=True)
是否有搭建的樹路徑的樹只有一個數據庫命中的方法嗎?
我嘗試這樣做:
userEdges = Edge.objects.filter(nodeFrom__in=userNodes, nodeTo__in=userNodes).select_related('nodeFrom', 'nodeTo)
,但如果我嘗試建立這樣的路徑,
def get_path(node, userEdges):
path = [node]
while path[-1].parentNode_id != None:
path.append(userEdges.get(nodeTo=node).nodeFrom)
return path
數據庫訪問總是由該行造成的:
userEdges.get(nodeTo=node).nodeFrom