Frage

In meinem Modell Ich habe ein Feld:

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

Wo LÄNDER ist ein Tupel von Tupeln wie folgt aus:

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

... und so weiter

Jetzt möchte ich eine Instanz dieses Modell filtern, die von den Ländernamen.

Dieses:

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

lässt mich nur Filter durch den Ländercode.

Wie kann ich nach Ländernamen filtern?

War es hilfreich?

Lösung

Sie können nicht direkt von dem Ländernamen filtern (die choices werden in der Benutzeroberfläche nur dann verwendet, nicht in der Datenbank).

Wenn Sie den vollständigen Namen als eine Eingabe erhalten, Lookup des Code in dem COUNTRIES Tupel-of-Tupel. Zum Beispiel:

# ... 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])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top