【发布时间】:2016-09-05 19:44:02
【问题描述】:
我正在尝试使用变量作为过滤键值。所有变量都取我想要的确切值,但随后我收到此错误。这是我的看法:
@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)
错误日志如下:
Complex annotations require an alias
Request Method: POST
Request URL: http://127.0.0.1:5555/data/map-data/
Django Version: 1.9.5
Exception Type: TypeError
Exception Value:
Complex annotations require an alias
Exception Location: /Library/Python/2.7/site-packages/django/db/models/query.py in annotate, line 895
Python Executable: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Python Version: 2.7.10
Python Path:
['/Users/hco/PycharmProjects/tool/linyit',
'/Applications/PyCharm CE.app/Contents/helpers/pydev',
'/Library/Python/2.7/site-packages/pip-8.1.1-py2.7.egg',
'/Users/hco/PycharmProjects/tool',
'/Applications/PyCharm CE.app/Contents/helpers/pydev',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages']
主要是我想添加一个可以根据请求参数更改的动态过滤器。如果你建议任何其他方式我也打开它。谢谢
【问题讨论】:
-
不确定我能在这里看到错误吗?
-
@Barry 我添加了错误
标签: python mysql django django-rest-framework