Python Django group by带变量

Python Django group by带变量,python,django,python-2.7,django-queryset,Python,Django,Python 2.7,Django Queryset,在这个例子中,我想通过变量传递值,在前面的几行中,我有一些if,根据它,我需要根据我的结果进行分组。 与“月”不同,“地点”应该有类似于my_列表的变量。我试图用join和map转换它,但每次都会出错 如果您有想要的值列表,可以使用*语法: truncate_date = connection.ops.date_trunc_sql('month', 'created') qs = Order.objects.extra({'month':truncate_date}) report = qs.v

在这个例子中,我想通过变量传递值,在前面的几行中,我有一些if,根据它,我需要根据我的结果进行分组。
与“月”不同,“地点”应该有类似于my_列表的变量。我试图用join和map转换它,但每次都会出错

如果您有想要的值列表,可以使用
*
语法:

truncate_date = connection.ops.date_trunc_sql('month', 'created')
qs = Order.objects.extra({'month':truncate_date})
report = qs.values('month', 'location').annotate(Count('pk'))

也许,你在找。如果函数需要单独的参数,并且这些参数位于列表或元组中,则应使用
*
将值解压为单独的值。字典的情况也有类似的语法
**

在您的情况下,请尝试:

truncate_date = connection.ops.date_trunc_sql('month', 'created')
qs = Order.objects.extra({'month':truncate_date})
value_list = ['month', 'location']
report = qs.values(*value_list).annotate(Count('pk'))

只需使用变量:
report=qs.values(我的列表)。注释(Count('pk'))
my_list = ['month', 'location']
truncate_date = connection.ops.date_trunc_sql('month', 'created')
qs = Order.objects.extra({'month':truncate_date})
report = qs.values(*my_list).annotate(Count('pk'))