2014-10-16 56 views
0

分組我有一個模型ArmCodeMappingDjango的ORM通過查詢

class ArmCodeMapping(models.Model): 
    arm_id = models.CharField(max_length = 255) 
    code = models.CharField(max_length = 255, unique = True) 

的記錄如下: -

arm_id , code 
1,abc 
1,def 
1,ghi 
1,werer 
2,xyz 
2,ghynn 

等。

我想寫一個查詢,將返回我由arm_id分組的代碼,即,我期待以下輸出。

{1:[abc,def,ghi,werer],2:[xyz,ghynn]} 

我可以使用FOR循環查詢模型生成上面的,但我想知道是否有任何直接查詢相同?

回答

1

我會說values_list結合defaultdict,這樣你就不必創建模型實例。 QuerySets只返回對象實例或列表實例。

d = defaultdict(list) 
qset = ArmCodeMapping.objects.values_list('arm_id', 'code') 
for item in qset: 
    d[item[0]].append(item[1]) 

現在變量d填滿了你想要的結果。

+0

結果= Python文檔{d [項目[0]]。追加(項目[1]),用於展示Qset項}返回None – PythonEnthusiast 2014-10-17 04:03:57

+0

@ user1162512我的錯誤,糾正它。 – Martin 2014-10-17 08:30:21