我试图使用变量作为筛选键值。所有变量都取我想要的精确值,但是我得到了这个错误。以下是我的观点:
@api_view(['POST'])
def map_data(request):
query_id = request.POST.get('queryId', 1)
group_name = request.POST.get('group', 'district')
query = QueryList.objects.using('teldata').get(query_id=query_id)
groups = query.network_element.lower().split(',')
values = query.kpi_val.lower().split(',')
kwargs = {groups[0]: group_name}
if len(values) == 1:
if len(groups) == 1:
report_data = SiteData.objects.using('teldata').values(groups[0]).annotate(
'latitude', 'longitude', 'latt_call_id', 'long_call_id', Avg(values[0])
).filter(**kwargs)
elif len(groups) == 2:
report_data = SiteData.objects.using('teldata').values(groups[0], groups[1]).annotate(
'latitude', 'longitude', 'latt_call_id', 'long_call_id', Avg(values[0])
).filter(**kwargs)
elif len(values) == 2:
if len(groups) == 1:
report_data = SiteData.objects.using('teldata').values(groups[0]).annotate(
'latitude', 'longitude', 'latt_call_id', 'long_call_id', Avg(values[0]), Avg(values[1])
).filter(**kwargs)
elif len(groups) == 2:
report_data = SiteData.objects.using('teldata').values(groups[0], groups[1]).annotate(
'latitude', 'longitude', 'latt_call_id', 'long_call_id', Avg(values[0]), Avg(values[1])
).filter(**kwargs)
return Response(report_data)
错误日志如下:
^{pr2}$我主要想添加一个动态过滤器,可以根据请求参数进行更改。如果你有其他建议,我也会打开它。谢谢
我发现了我的错误,这是一个严重的错误:
工作代码如下:
“纬度”、“经度”、“纬度”、“经度”、“经度”、“经度”、“经度”应该在所有实例中的值部分中。在
这是你复杂的注解。在
此ORM查询将转换为包含GROUPBY子句的SQL查询。通常,ORM将按其中一个键分组并在
values[0]
字段(无论是什么)上聚合。但是其他字段latitude
,longitude
等呢?您没有为它们进行任何分组或聚合,这会混淆查询解析器。在如果您花点时间考虑一下这个查询,您将认识到在对特定列分组时获取
long_call_id
实际上没有任何意义。mysql的旧版本(5.7.6之前的版本)将相关问题 更多 >
编程相关推荐