Передача аргумента из списка - PullRequest
2 голосов
/ 01 декабря 2011

У меня есть функция, которую я использую, и мне нужно передать ей список аргументов, однако при попытке передать список выдает ошибку, поскольку она не может хешироваться.

Рассматриваемая здесь функция - это метод values ​​() в Django Queryset, но я думаю, что это более общий вопрос по Python.

Итак, у меня есть:

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

Это выдает ошибку unhashable type: 'list', когда я пытаюсь запустить код. Предполагая, что я не могу изменить метод значений, как я могу добавить этот список в список аргументов обычным способом?

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

Ответы [ 3 ]

8 голосов
/ 01 декабря 2011

вам нужно использовать список распаковки

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

(обратите внимание на звездочку)

0 голосов
/ 01 декабря 2011

Имеет смысл сделать values_list как кортеж вместо списка, но если вы не можете изменить метод значений, то распаковка списка - путь.

0 голосов
/ 01 декабря 2011

вы можете использовать кортеж вместо списка?кортеж является хэшируемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...