从列表中传递参数

时间:2011-11-30 22:51:30

标签: python django list

我有一个我正在使用的函数,我需要传递一个参数列表,但是,当我尝试传递列表时它会出错,因为它无法散列。

这里讨论的函数是Django Queryset上的values()方法,但我认为这是一个更普遍的python问题。

所以我有:

values_list = ['arg1', 'arg2', 'arg3']
models.MyModel.objects.values(values_list).all()

当我尝试运行代码时,这会给出错误unhashable type: 'list'。 假设我无法改变values方法,如何以正常方式将此列表添加到参数列表中?

for arg in values_list:
  queryset = MyModel.objects.values(arg)

3 个答案:

答案 0 :(得分:8)

您需要使用list unpacking

models.MyModel.objects.values(*values_list).all()

(注意星号)

答案 1 :(得分:0)

你可以使用元组而不是列表吗?元组是可以清洗的。

答案 2 :(得分:0)

将values_list作为元组而不是列表是有意义的,但是如果你不能改变values方法,那么列表解包是最佳选择。