0

我正在尝试使用此表单从列表中过滤唯一性:

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

任何提示?

4

1 回答 1

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()您会得到一个包含字典值的列表。所以用字典是没有意义的。

使用第二种方法,您可以直接获得一个列表。

希望能帮助到你。

于 2013-05-02T15:51:43.630 回答