首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将大容量参数赋给Django对象值列表?

如何将大容量参数赋给Django对象值列表?
EN

Stack Overflow用户
提问于 2022-04-02 08:52:19
回答 1查看 47关注 0票数 1

如何将大容量参数分配给Django对象值列表?

  1. 大容量参数分配

代码语言:javascript
复制
strlist = ["a","b","c"]
model1. objects.filter(**kwargs).values_list(strlist)

结果

代码语言:javascript
复制
TypeError: unhashable type: 'list'

  1. 手册作业

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list("a","b","c")

结果很好

如何分配大容量参数分配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-02 09:13:40

简短答覆:

尝试:

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list(*strlist)

解释:

问题是该函数需要输入未打包的值。list*list是有区别的。*list表示列表中单个值的解压缩,然后输入它们。

所以,

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list(strlist)

被解释为

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list(["a", "b", "c"])

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list(*strlist)

被解释为

代码语言:javascript
复制
model1. objects.filter(**kwargs).values_list("a", "b", "c")

示例1:

代码语言:javascript
复制
a = [1,2,3,4]
print(a)
print(*a)

输出:

代码语言:javascript
复制
[1, 2, 3, 4]
1 2 3 4

因此,虽然a表示列表a,但以列表形式表示,*a表示列表a作为其单独的元素。因此,即使您尝试索引*a,它也会显示一个错误。

另一方面,**dict1是指字典dict1将参数作为键值对的场景。例如:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
1 2 3 4
1 2 4 3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71716112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档