Pergunta

No meu modelo eu tenho um campo:

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

Onde os PAÍSES é uma tupla de tuplas como este:

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

...e assim por diante

Agora eu quero filtro de uma instância do modelo, pelo nome do país.

Este:

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

apenas me permite filtrar pelo código do país.

Como posso filtrar por nome de país?

Foi útil?

Solução

Você pode filtrar diretamente pelo nome do país (o choices só são usados na INTERFACE do usuário, não no banco de dados).

Se você obter o nome completo como uma entrada, pesquisa o código no COUNTRIES tupla de tuplas.Por exemplo:

# ... 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])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top