Domanda

Nel mio modello ho un campo:

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

in cui i paesi è una tupla di tuple come questo:

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

... e così via

Ora voglio filtrare un'istanza di quel modello, dal nome del paese.

Questa:

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

consente solo di filtrare in base al codice del paese.

Come faccio a filtrare dal nome del paese?

È stato utile?

Soluzione

Non è possibile filtrare direttamente dal nome del paese (la choices sono utilizzati al solo nell'interfaccia utente, non nel database).

Se si ottiene il nome completo come input, ricerca il codice nella COUNTRIES tupla-di-tuple. Ad esempio:

# ... 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])
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top