como posso filtrar o segundo elemento em uma tupla de tuplas?
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?
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