我有一个模型,测试数据如下
id days
1,30 1,40 2,10 2,20 1,90
我希望输出为
1,[30,40,90]
2,[10,20]
我怎样才能在Django中获得这个?
答案 0 :(得分:0)
Django并不多,它是纯粹的蟒蛇。要将结果作为' id'的映射。关键:
result = {}
for obj in Mymodel.objects.all():
if result.has_key(obj.id):
result[obj.id].append(obj.days)
else:
result[obj.id] = [obj.days]
print result
>>> {1: [30, 40, 90], 2: [10, 20]}
未定义每个列表中元素的顺序。如果您需要订购这些,最好在Queryset上附加.order_by('days')
。
最后一句话:您的身份'不是唯一的。我会考虑一个名为' id'的非pk列。一个不好的做法,因为' id'是Django自动创建的pk-field的默认名称。