Question

Dans mon modèle, j'ai un champ:

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

Lorsque les pays est un tuple de tuples comme ceci:

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

... et ainsi de suite

Maintenant, je veux filtrer un exemple de ce modèle, par le nom du pays.

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

ne me laisse filtrer par le code du pays.

Comment puis-je filtrer par nom du pays?

Était-ce utile?

La solution

Vous ne pouvez pas filtrer directement par le nom du pays (le choices ne sont utilisés que dans l'interface utilisateur, et non pas dans la base de données).

Si vous obtenez le nom complet comme entrée, rechercher le code dans le COUNTRIES tuple-de-tuples. Par exemple:

# ... 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])
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top