25.10
Campos Select box
Quando realizamos uma queryset para preencher o campo ChoiceFields com os obejtos resultantes do banco de dados, ele cria essa lista com o primeiro objeto resultante selecionado, mas e se eu não quiser que o primeiro objeto já venha selecionado, e sim um outro valor como ‘Escolha uma categoria’ ou até mesmo vázio!?
Para exemplicar criarei a seguinte view:
01 class Categoria(forms.Form):02 03 #busca todas as categorias04 busca_categorias = Categoria.objects.values_list('slug','nome')05 06 #inicia a lista vazia07 lista_categoria=[]08 09 #adiciona o valor ao final da lista10 lista_categoria.append((u'none',u'Escolha uma categoria'))11 12 #adiciona as categorias uma por uma ao final da lista13 for item in busca_categorias:14 lista_categoria.append(item)15 16 #gera o select box17 categorias = forms.ChoiceField(lista_categoria)
Explicação
Repare que na linha 07 criei uma lista*, que na qual iniciei vázia e posteriormente inseri o primeiro valor com o método append**, definindo assim que o primeiro valor no select box será ‘Escolha uma categoria’ e não um resultado do banco de dados. Para tornar os objetos resultantes parte da lista usaremos o mesmo método append, porém para isso precisaremos realizar um loop para adicioná-los a nossa lista, conforme a linha 13.
* A lista é uma seqüência: um conjunto linear (como um vetor em outras linguagens) de valores indexados por um número inteiro. Os índices são iniciados em zero e atribuídos seqüencialmente a partir deste. A lista pode conter quaisquer valores, incluindo valores de tipos mistos, e até outras listas. Para criar uma lista, usamos colchetes e vírgulas para enumerar os valores.
** O método append(v) recebe como argumento um valor, e adiciona este valor ao final da lista.
Não há comentários ainda.
Deixe seu comentário