変数をフィルタのキー値として使用しようとしています。すべての変数は、私が望む正確な値を取るが、私はこのエラーが発生します。ここでの私の見解は以下のとおりです。Django Mysql Complexアノテーションにエイリアスが必要です
@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']
主に私はリクエストパラメータに応じて変更することができ、動的フィルタを追加します。あなたが他の方法を示唆しているならば、私はそれを開いています。ありがとう
notureここにエラーが表示されますか? – Barry
@Barryエラーを追加しました。 – hco