Django组由变量组成

时间:2016-03-03 13:33:32

标签: python django python-2.7 django-queryset

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

在这个例子中,我想通过变量传递值,在前面的行中我有一些if并依赖于它我需要按结果分组。 而不是'月','位置'应该有像my_list这样的变量。我试图用连接和地图转换它,但每次我收到错误。

2 个答案:

答案 0 :(得分:3)

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

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'))

答案 1 :(得分:3)

您可能正在寻找unpacking。如果函数需要单独的参数,并且您在列表或元组中有这些参数,则应使用*将值解压缩为单独的。对于词典的情况,语法**类似。

在你的情况下,试试:

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'))