Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新手Django过滤器uniques 2多个值_Django_Forms_Filter_Unpack - Fatal编程技术网

新手Django过滤器uniques 2多个值

新手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(

我正在尝试使用此表单从列表中筛选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(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'