我正在尝试使用此表单过滤列表中的唯一身份:
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
任何提示?
答案 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()
时,您会得到一个包含字典值的列表。所以使用字典毫无意义。
使用第二种方法,您可以直接获得列表。
希望它有所帮助。