如何将批量参数分配给 Django 对象值列表?
How to assign bulk parameter to Django object values list?
如何将批量参数分配给 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")
结果没问题
如何批量参数赋值?
简答:
尝试:
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
的参数为 key-value 对的情况。例如:
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 3
如何将批量参数分配给 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")
结果没问题
如何批量参数赋值?
简答:
尝试:
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
的参数为 key-value 对的情况。例如:
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 3