如何將批量引數分配給 Django 物件值串列?
批量引數分配
strlist = ["a","b","c"]
模型1。objects.filter(**kwargs).values_list(strlist)
結果:TypeError:不可散列的型別:'list'
手動分配
模型1。objects.filter(**kwargs).values_list("a","b","c")
結果沒問題
如何分配批量引數分配?
uj5u.com熱心網友回復:
簡短答案:
嘗試:
model1. objects.filter(**kwargs).values_list(*strlist)
說明:
問題在于該函式要求您輸入解壓縮的值。lista和之間有區別*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為其各個元素。因此,即使您嘗試 index *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 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455044.html
