2015-04-02 36 views
1

我一個模型中有一個工作(但醜陋的)方法:Django |從查詢獲得的有序字典有關係

@classmethod 
def get_tasks(cls, user): 
    tasks = cls.objects\ 
     .filter(agent=user)\ 
     .prefetch_related('parent', 'agent') 
    ordered_tasks = {} 
    for task in tasks: 
     if task.parent.pk not in ordered_tasks: 
      ordered_tasks[task.parent.pk] = { 
       'parent': task.parent, 
       'tasks': [] 
      } 
     ordered_tasks[task.parent.pk]['tasks'].append(task) 
    return ordered_tasks 

它的工作好,但我敢肯定有一個更好的解決方案,具有相同的結果。

任何想法引導我?

回答

0

使用字典的setdefault()方法:

ordered_tasks = {} 
for task in tasks: 
    ordered_tasks.setdefault(task.parent.pk, {'parent': task.parent, 
               'tasks': []} 
          )['tasks'].append(task) 
+0

感謝您的答覆,比我漂亮的條件;) 沒有辦法解決產生這樣的結果只能用Django的ORM? – HarmO 2015-04-03 07:37:40