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这样的变量。我试图用连接和地图转换它,但每次我收到错误。
答案 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'))