如何将大容量参数分配给Django对象值列表?
strlist = ["a","b","c"]
model1. objects.filter(**kwargs).values_list(strlist)结果
TypeError: unhashable type: 'list'model1. objects.filter(**kwargs).values_list("a","b","c")结果很好
如何分配大容量参数分配?
发布于 2022-04-02 09:13:40
简短答覆:
尝试:
model1. objects.filter(**kwargs).values_list(*strlist)解释:
问题是该函数需要输入未打包的值。list和*list是有区别的。*list表示列表中单个值的解压缩,然后输入它们。
所以,
model1. objects.filter(**kwargs).values_list(strlist)被解释为
model1. objects.filter(**kwargs).values_list(["a", "b", "c"])但
model1. objects.filter(**kwargs).values_list(*strlist)被解释为
model1. objects.filter(**kwargs).values_list("a", "b", "c")示例1:
a = [1,2,3,4]
print(a)
print(*a)输出:
[1, 2, 3, 4]
1 2 3 4因此,虽然a表示列表a,但以列表形式表示,*a表示列表a作为其单独的元素。因此,即使您尝试索引*a,它也会显示一个错误。
另一方面,**dict1是指字典dict1将参数作为键值对的场景。例如:
def b(hel, lo, wo, rl):
print(hel, lo, wo, rl)
a = [1,2,3,4]
d = {'hel':1, 'lo':2, 'rl':3, 'wo':4}
b(*a)
b(**d)输出:
1 2 3 4
1 2 4 3https://stackoverflow.com/questions/71716112
复制相似问题