2013-05-02 64 views
0

我試圖從列表這種形式篩選的唯一身份:新手Django的過濾器的唯一身份2個多值

class SpecForm(ModelForm): 
    a = Doctors_list.objects.values_list('specialty', flat=True) 
    unique = {z: i for i, z in a} 
    qs = Doctors_list.objects.filter(id__in=unique.values()) 
    specialty = forms.ModelChoiceField(queryset=qs) 

class Meta: 
    model = Doctors_list 

一切似乎對我來說是正確的,但我得到這個錯誤:too many values to unpack

任何提示?

回答

1

我認爲正確的說法應該是這樣的:

unique = {z: i for i in a} 

你具體試圖把這些值轉換成字典?這將產生一個列表:

unique = [ i for i in a ] 

如果用這個去了,你就必須刪除.values()qs = Doctors_list.objects.filter(id__in=unique.values())留下這樣的:

qs = Doctors_list.objects.filter(id__in=unique) 

這是怎麼回事的是,在括號第一種方法是用一個鍵和一個列表創建一個字典作爲該鍵的值。當你發出.values()時,你會得到一個包含字典值的列表。所以使用字典是沒有意義的。

第二種方法是直接獲取列表。

希望它有幫助。

+0

我想做一個選擇菜單,我需要過濾列表 – ClaudioA 2013-05-02 15:56:38

+0

我想它的工作 – ClaudioA 2013-05-02 15:59:48

+0

嗯,我認爲你應該更好地使用我的第二種方法,然後刪除'qs = Doctors_list中的'.value()' .objects.filter(id__in = unique.values())'離開它是這樣的:qs = Doctors_list.objects.filter(id__in = unique) – 2013-05-02 16:00:28