我试图使用变量作为筛选键值。所有变量都取我想要的精确值,但是我得到了这个错误。以下是我的观点:@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}$
我主要想添加一个动态过滤器,可以根据请求参数进行更改。如果你有其他建议,我也会打开它。谢谢