从django查询对象准备字典

时间:2014-06-13 08:59:35

标签: python django dictionary django-queryset

我有一个Db表,其中数据以下面的格式存储。

+---------+-------------------------------------------+-------------+
| id      | category                                  | categ_rules |
+---------+-------------------------------------------+-------------+
|       1 | A                                         | Invetory    |
|       2 | A                                         | Index       |
|       3 | B                                         | Organic     |
|       4 | B                                         | Shuffle     |
|       5 | B                                         | Parag       |
|       6 | C                                         | Numero      |
|       7 | C                                         | Rugby       |
|       8 | D                                         | Amdar       |
|       9 | D                                         | Rutha       |
|      10 | D                                         | Athens      |
+---------+-------------------------------------------+-------------+

我想以下面的格式准备字典

{
    'category': A,
    'rules_data': [{'rules_id': 1, 'categ_rules': Inentory},{'rules_id': 2, 'categ_rules': Index}]
}

......类似于B,C,D

我写了一个django查询来提取所有数据

rules_data = CatRule.objects.all()

如何遍历对象并构建格式以上的数据。

1 个答案:

答案 0 :(得分:0)

a类似于查询中的ur行 注意只能以类似的顺序从ur查询中带来category,ruleid,categ_rules

 a=[[1,'A','Inv'],[2,'A','Index'],[3,'B','Orga']]


values = set(map(lambda x:x[1], a))
dict=[]
for x in values:
    temp={}
    temp['catogory']=x
    temp['rules']=[]
    for y in a:
        if y[1]==x:
             temp['rules'].append({'ruleid':y[0],'categ_rules':y[2]})
    dict.append(temp)
print dict

#output=[{'rules': [{'categ_rules': 'Inv', 'ruleid': 1}, {'categ_rules': 'Index', 'ruleid': 2}], 'catogory': 'A'}, {'rules': [{'categ_rules': 'Orga', 'ruleid': 3}], 'catogory': 'B'}]