2013-05-02 5 views
0

я пытаюсь фильтровать уник из списка с помощью этой формы:Новичок Джанго фильтр уников 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

+0

Я думаю, он сработал – ClaudioA

+0

Ну, я думаю, вам лучше пойти с моим вторым подходом, а затем удалить '.value()' in qs = Doctors_list .objects.filter (id__in = unique.values ​​()) 'оставив его следующим образом: qs = Doctors_list.objects.filter (id__in = unique) –