como acessar dicionario de choices...

79 views
Skip to first unread message

Fernando Lyrio Annecchini

unread,
Feb 7, 2008, 11:15:43 AM2/7/08
to django...@googlegroups.com

To com uma duvida aqui que não consigo achar na documentação.....

tenho  esse campo dentro de um dos meus modelos....

class Teste:
    tipos_de_sexo = (
    ('Homem'    ,  'MA'),
    ('Mulher'      ,  'FE'  ),
    )
    sexo = models.CharField(maxlength=2, choices=tipos_de_sexo)

como que eu faço para imprimir  no template os valores do dicionario?
EX:

FE  = Feminino
MA = Masculino
.
.
.

Pegar os dicionario na view é facil (tipo_s = Teste.tipos_de_sexo)
mas na hora de imprimir sai assim

('Homem', 'MA')

Quero pegar um valor de cada vez....




--
/*by Fernando Lyrio Annecchini*/

Renato Garcia Pedigoni

unread,
Feb 7, 2008, 11:23:45 AM2/7/08
to django...@googlegroups.com
Instancia um objeto (t) e chama o "get_foo_display()", onde foo = nome do campo.
Fica alguma coisa assim: t.get_tipos_de_sexo_display()

Vê se funciona ai!

Abração
Renato
--
Atenciosamente,
Renato Garcia Pedigoni

Fernando Lyrio Annecchini

unread,
Feb 7, 2008, 11:40:26 AM2/7/08
to django...@googlegroups.com
assim funciona, mas oq eu quero fazer é pegar essas informações de diconario para criar um pequeno formulário de busca
não de uma instância só, mas de todas as choices que foram definidas no modelo....

a ideia é criar um pequno formulario com checkbox para que que possa marcar os itens para busca....




Em 07/02/08, Renato Garcia Pedigoni <renatop...@gmail.com> escreveu:

Fernando Lyrio Annecchini

unread,
Feb 7, 2008, 11:50:55 AM2/7/08
to django...@googlegroups.com
tipo_s = Teste.tipos_de_sexo

context={
                 'tipo_s'   : tipo_s,
}
    return render_to_response('index.html', context)

como mostrei no exemplo acima, não peguei um objeto do tipo Teste, apenas o dicionário inteiro do modelo Teste.

no template estou tentando imprimir assim

{% for ts in tipo_s %}
<input name="tiposexo" value="{{ts}}" checked="checked" type="checkbox">{{ts}}
{% endfor %}

só que, claro, esta imprimindo  ts da seguinte forma.


('Homem', 'MA')

Tem algum filtro que eu possa usar que separa esse dicionário? para que eu possa escrever:

na declaração do input: value="MA"
e depois do input         : Homem



Em 07/02/08, Fernando Lyrio Annecchini <fernan...@gmail.com> escreveu:

Marinho Brandao

unread,
Feb 7, 2008, 12:04:52 PM2/7/08
to django...@googlegroups.com
Fernando,

esta é uma tupla de tuplas com dois valores, não um dicionario, e para
acessar elementos de tuplas ou listas no template vc pode fazer assim:

{% for ts in tipo_s %}

<input name="tiposexo" value="{{ ts.0 }}" checked="checked"
type="checkbox">{{ ts.1 }}
{% endfor %}

o 0 e o 1 são os indices dos itens que você dentro da tupla :)


--
Marinho Brandão (José Mário)
http://marinho.webdoisonline.com/

Fernando Lyrio Annecchini

unread,
Feb 7, 2008, 12:36:05 PM2/7/08
to django...@googlegroups.com
valeu Marinho, brigadão.....
Obrigado a todos...

Em 07/02/08, Marinho Brandao <mar...@gmail.com> escreveu:
Reply all
Reply to author
Forward
0 new messages