1
resposta

Ordenar as opções choices

Olá amigos, bateu a curiosidade de como é feita a ordenação das "choices".. fiz alguns testes aqui alterando as opções mas não consegui entender como é feita a ordenação. Não pareceu ter ordenado por ordem alfabética e nem pela "key".. Alguém ai sabe como ordenar aquilo?

classe_viagem = forms.ChoiceField(label='Classe do Voô', choices=tipos_de_classe)

tipos_de_classe = {
    (1, 'Econômica'),
    (2, 'Executiva'),
    (3, 'Primeira Classe'),
}
1 resposta

Oi, Paulo, como vai?

Sinto muito pela demora em retornar.

Neste caso, realmente as choices não estão sendo ordenadas por nenhum fator, sendo renderizadas de forma randômica na tela. Isso acontece porque estamos utilizando um conjunto Set para definir os tipos de classe, pois conjuntos Set não possuem uma ordem e nem são indexados, por esse motivo o Django não consegue estabelecer uma ordem e a ordenação é feita randomicamente.

Para exibir de forma ordenada teríamos que utilizar Listas ou Tuplas, que são estruturas ordenadas e que possuem índices, assim o Django conseguirá utilizar a ordem dessas estruturas para fazer a renderização. Para deixar de exemplo, a declaração dos tipos de classe utilizando lista ficaria assim:

tipos_de_classe = [
   (1, 'Econômica'),
   (2, 'Executiva'),
   (3, 'Primeira Classe'),
]

Espero ter ajudado.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software