新手Django过滤器uniques 2多个值
我正在尝试使用此表单从列表中筛选Unique:新手Django过滤器uniques 2多个值,django,forms,filter,unpack,Django,Forms,Filter,Unpack,我正在尝试使用此表单从列表中筛选Unique: 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(
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
对我来说,一切似乎都是正确的,但我遇到了这样一个错误:太多的值无法解压缩
有什么提示吗?我认为正确的说法应该是:
unique = {z: i for i in a}
您是否特别尝试将这些值放入字典?这将产生一个列表:
unique = [ i for i in a ]
如果执行此操作,则必须删除qs=Doctors\u list.objects.filter(id\u in=unique.values())中的.values()
,如下所示:
qs = Doctors_list.objects.filter(id__in=unique)
这里的情况是,在第一种方法中,使用括号创建一个字典,其中只有一个键和一个列表作为该键的值。当您发布.values()
时,您会得到一个包含字典值的列表。所以使用字典是没有意义的
使用第二种方法,您可以直接获得一个列表
希望有帮助。我正在尝试创建一个选择菜单,我需要列表过滤器。我想你最好使用我的第二种方法,然后删除qs=Doctors\u list.objects.filter(id\u in=unique.values())
中的.value()
如下所示:qs=Doctors\u list.objects.filter(id\u in=unique)我现在遇到了一个问题:qs=Doctors\u list.objects.filter(id\u in=unique.values())->“list”对象没有属性“values”。请看上面的注释,我将编辑我的答案。删除qs=Doctors\u list.objects.filter(id\u in=unique.values())中的.value(),如下所示:qs=Doctors\u list.objects.filter(id\u in=unique)我按照你说的做了,但是列表上的第一项出现了一个奇怪的错误:int()的无效文本,基数为10:'Dentista'