どのように私はタプルのタプルの2番目の要素に基づいてフィルタリングすることができますか?

StackOverflow https://stackoverflow.com/questions/1745919

  •  20-09-2019
  •  | 
  •  

質問

私のモデルでは、私は、フィールドを持っています:

   country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES)

の国はこのようなタプルのタプルである場合:

COUNTRIES = (
    ('AF', _('Afghanistan')),

...というように

今、私は国の名前で、そのモデルのインスタンスをフィルタリングする。

この:

   i = MyModel.objects.filter(country__iexact=query)

私だけが、国コードによってフィルタリングすることができます。

どのように私は国の名前でフィルタリングすることができますか?

役に立ちましたか?

解決

あなたは(choicesしかないデータベースに、UIで使用されている)国名で直接フィルタリングすることはできません。

あなたが入力として完全な名前を取得する場合は、

COUNTRIESタプルのタプルのコードを検索。たとえばます:

# ... initialize a lookup dictionary
country_to_id_dict = dict((t[1], t[0]) for t in COUNTRIES)

# ... use the dictionary in the query
i = MyModel.objects.filter(country__exact=country_to_id_dict[query])
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top