新手Django过滤uniques 2许多值

时间:2013-05-02 15:48:50

标签: django forms filter unpack

我正在尝试使用此表单过滤列表中的唯一身份:

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 个答案:

答案 0 :(得分: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()时,您会得到一个包含字典值的列表。所以使用字典毫无意义。

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

希望它有所帮助。

相关问题