2009
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 categorias
04
    busca_categorias = Categoria.objects.values_list('slug','nome')
05
 
06
    #inicia a lista vazia
07
    lista_categoria=[]
08
 
09
    #adiciona o valor ao final da lista
10
    lista_categoria.append((u'none',u'Escolha uma categoria'))
11
 
12
    #adiciona as categorias uma por uma ao final da lista
13
    for item in busca_categorias:
14
        lista_categoria.append(item)
15
 
16
    #gera o select box
17
    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.

Também não deixe de ler:

Não há comentários ainda.

Deixe seu comentário