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)

ここで何が起こっているかというと、最初のアプローチで括弧を使用すると、キーが 1 つだけの辞書が作成され、そのキーの値としてリストが作成されます。発行.values()すると、辞書の値のリストが取得されます。だから、辞書を使うのは無意味です。

2 番目のアプローチでは、リストを直接取得します。

それが役に立てば幸い。

于 2013-05-02T15:51:43.630 に答える