Python 如何根据Django视图中queryset的公共元素按值分组?
我是Django的新手,我需要这些数据来呈现一些图表,请帮助 我必须将查询集作为特定结构中的词典 我的看法是:Python 如何根据Django视图中queryset的公共元素按值分组?,python,django,view,nested,django-queryset,Python,Django,View,Nested,Django Queryset,我是Django的新手,我需要这些数据来呈现一些图表,请帮助 我必须将查询集作为特定结构中的词典 我的看法是: def pr1(request): fdate = unidecode(str(request.GET.get('fdate'))) tdate = unidecode(str(request.GET.get('tdate'))) dataSource = OrderedDict() dataSource["datase
def pr1(request):
fdate = unidecode(str(request.GET.get('fdate')))
tdate = unidecode(str(request.GET.get('tdate')))
dataSource = OrderedDict()
dataSource["dataset"] = []
for key in Production.objects.filter(date__range=(fdate, tdate)).values('date', 'comName').annotate(total_qty=Sum('qty')):
seriesname = {}
data = {}
data["seriesname"] = key['comName']
data["value"] = key['total_qty']
dataSource["dataset"].append(data)
这是我的查询的输出:
[
{'date': '1398/08/01', 'comName': 'a', 'total_qty': 253.0},
{'date': '1398/08/02', 'comName': 'a', 'total_qty': 263.0},
{'date': '1398/08/01', 'comName': 'b', 'total_qty': 3.938},
{'date': '1398/08/02', 'comName': 'b', 'total_qty': 31.625}
]
附加后的数据源:
"dataset": [
{
"seriesname": "a",
"value": 253
},
{
"seriesname": "a",
"value": 263
},
{
"seriesname": "b",
"value": 3.938
},
{
"seriesname": "b",
"value": 31.625
}
但我必须得到如下信息:
"dataset": [
{
"seriesname": "a",
"data": [
{
"value": "253"
},
{
"value": "263"
}]},
{
"seriesname": "b",
"data": [
{
"value": "3.938"
},
{
"value": "31.625"
}]}
]
您的问题实际上不是Django特定的问题,而是Python的一般问题。你可以改变你的迭代,例如
def pr1(request):
fdate = unidecode(str(request.GET.get('fdate')))
tdate = unidecode(str(request.GET.get('tdate')))
dataSource = OrderedDict()
dataSource["dataset"] = []
seriesname = ''
data = None
for key in Production.objects.filter(date__range=(fdate, tdate)).values('date', 'comName').annotate(total_qty=Sum('qty')).order_by('comName':
if not key['comName'] == seriesname:
seriesname = key['comName']
if data is not None:
dataSource["dataset"].append(data)
data = {
'seriesname': key['comName'],
'data': [
{'value': key['total_qty']}
]
}
else:
data['data'].append({'value': key['total_qty']})
dataSource["dataset"].append(data)
我在您的查询集中添加了
order\u by
,以使其生效。您确定要获得的结构吗?看起来有点奇怪-字典只有一个元素?你有什么特别的问题吗?你到底尝试了什么,问题是什么?此外,变量名和函数名通常应在带有下划线的小写字母后面。@ger.s.brett我已经简化了我的代码。我字典的其余部分还可以,我只是不知道如何得到这部分fixed@AMC是的,我的问题是如何得到我想要的输出,我已经尝试了迭代,但无法计算它out@HadiWaheed然后分享你试过的代码,对吗?堆栈溢出不适用于一般的“我该怎么做”问题。