我一直试图找到获取第一批数据的方法。
这是我在数据库中的数据。
id name next
001 task1 002
002 task2 003
003 task3 000
我想要做的是获取headnode的第一个值,该值应为001
,如数据库所示。
这是我的代码
while True:
self.headNode = 000
try:
lastNode = Task.objects.get(next=self.headNode)
self.headNode = lastNode.id
break
except Task.DoesNotExist:
break
我在这里期望,self.headNode的值应为001
,但它给了我003
。请帮助我如何获得001
。我现在已经有近一个月的时间了。
这是另一个数据示例。
id name next
222 task1 444
333 task2 222
444 task3 000
在这里......头节点应该是333
并且知道这一点。我将获取next
为000
的数据。然后得到它444
。然后我会得到其他数据,其中下一个是444
,id
是222
。最后得到next
为222
的数据,然后您将获得ID 333
。这样就可以显示头节点是333
。我希望我已经清楚地解释了它。
答案 0 :(得分:1)
循环只运行一次,因为您添加了break
语句。
此外,由于headNode的初始值为000,lastNode将包含003,因为您已经编写了查询,过滤为next = 000,其中我们为id 003.这就是您获得003的原因
好的,所以如果headNode是下一个不是任何其他节点的节点,你可以这样检索它:
self.headNode = 000
while True:
try:
lastNode = Task.objects.get(next=self.headNode)
self.headNode = lastNode.id
except Task.DoesNotExist:
print("Head Node ->", self.headNode)
break