2016-10-25 43 views
1

嗨我編程使用python,我想根據next字段以正確的順序顯示列表。我有一個模型,它看起來像:基於'下一個'字段的數據排序

任務()

id  name  next 
001  task1  007 
005  task2  000 
007  task3  005 

我不知道如何來顯示它,因爲我只知道基本的

taskList = Task.objects.all() 

所以當我展示它,它應該看起來像

task1 
task3 
task2 

第一個數據的ID是001,它的下一個字段是007,這意味着下一個數據的ID應該是0 07,其下一個字段是005等

+1

這是一個鏈表,你怎麼知道這是第一個「節點」(項目)。您可能會考慮保留前一個字段,那麼第一個項目會有一個空白(或零)前一個字段 – jimscafe

+0

這實際上是一個很好的建議。那麼,我將它改爲前一個,而不是下一個。 –

+0

存儲'下一個'在我看來似乎不適合在設計中。另外,一個Django模型已經創建了一個'id',但你添加了第二個?你想達到什麼目的? – FeedTheWeb

回答

0

我認爲最好的方法是添加Position字段。您可以重新計算Position覆蓋save()方法,但要小心鎖定和性能。

你也可以看看爲django-positions做你的工作。

0
taskList = Task.objects.all().order_by('next') 

您也可以直接將其添加到模型中,使用Meta選項

class Task(models.Model): 
     ... 
     class Meta: 
      ordering = ['next']