wie kann ich in einem Tupel von Tupeln auf das zweite Element filtern?
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?
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