Ocultar campos com javascript

327 views
Skip to first unread message

jeferson

unread,
Sep 25, 2008, 4:09:13 PM9/25/08
to Django Brasil
Olá pessoa. Estou precisando ocultar alguns campos do Admin.

Tenho a seguinte situação:
Cadastro de clientes onde tenho que escolher o tipo de pessoa (física
ou jurídica). Dependendo da escolha, informações relacionadas a
segunda escolha são ocultadas, por exemplo, caso escolha pessoa
física, os campos CNPJ e IE são ocultados.
Fiz isso através de javascript, através de GetElementByID, porém,
consigo ocultar apenas o campo propriamente dito, não o label do
campo. Como o admin gera o label sem um id, não tem como eu usar o
GetElementByID.
Alguém tem alguma sugestão de como eu poderia ocultar os campos,
inclusive seus id's?

------------------------------
Pesquisa de opinião:
O que acham de eu deixar todas as informações disponíveis para o
usuário através de fieldsets collapse, tipo:

Dados de pessoa Física (mostrar)
Dados de pessoa Jurídica (mostrar)

Dessa forma o usuário teria todas as informações disponíveis na tela,
bastando preencher apenas as que lhe interessar.

Acham mais interessante escolher o tipo de pessoa, exibindo ou
ocultando informações referentes ao tipo escolhido, ou todas as
informações na tela, disposta com collapse???

Pergunto isso porque, caso não consiga ocultar os labels, farei dessa
forma.
------------------------------

Bom, se puderem me ajudar com isso, ficarei muito grato.

wancharle sebastiao quirino

unread,
Sep 25, 2008, 4:31:23 PM9/25/08
to django...@googlegroups.com
voce pode criar um view que simplesmente  pergunte se é pessoa fisica ou juridica
dependendo da resposta voce redireciona para outra view com o  form expecifico.

exemplo de forms que esconderiam os campos supondo que o model seja "Clientes":

class PessoaJuridicaForm(ModelForm):
          class Meta:

   

2008/9/25 jeferson <nas...@gmail.com>

wancharle sebastiao quirino

unread,
Sep 25, 2008, 4:33:38 PM9/25/08
to django...@googlegroups.com
ops saiu sem querer....

voce pode criar um view que simplesmente  pergunte se é pessoa fisica ou juridica
dependendo da resposta voce redireciona para outra view com o  form expecifico.

exemplo de forms que esconderiam os campos supondo que o model seja "Clientes":

class PessoaJuridicaForm(ModelForm):
          class Meta:
                 model= Clientes

class PessoaFisicaForm(ModelForm):
          class Meta:
                 model = Clientes
                 exclude = ('CNPJ', IE) 

o ultimo form exclui os campos que voce quer sem usar javascript


2008/9/25 wancharle sebastiao quirino <wanc...@gmail.com>

jeferson

unread,
Sep 25, 2008, 7:01:37 PM9/25/08
to Django Brasil
Wancharle,

Muito obrigado pela dica. Teria como me dar uma idéia de como isso
fazer isso. Infelizmente sou iniciante (ainda) e se puder me guiar
agradeceria muito. Não tenho experiência em views, templates... como
estou iniciando os estudos, ainda estou usando (e gostando muito) do
Admin.

Muito obrigado.

On 25 set, 18:33, "wancharle sebastiao quirino" <wancha...@gmail.com>
wrote:
> ops saiu sem querer....
> voce pode criar um view que simplesmente  pergunte se é pessoa fisica ou
> juridica
> dependendo da resposta voce redireciona para outra view com o  form
> expecifico.
>
> exemplo de forms que esconderiam os campos supondo que o model seja
> "Clientes":
>
> class PessoaJuridicaForm(ModelForm):
>           class Meta:
>                  model= Clientes
>
> class PessoaFisicaForm(ModelForm):
>           class Meta:
>                  model = Clientes
>                  exclude = ('CNPJ', IE)
>
> o ultimo form exclui os campos que voce quer sem usar javascript
>
> 2008/9/25 wancharle sebastiao quirino <wancha...@gmail.com>
>
> > voce pode criar um view que simplesmente  pergunte se é pessoa fisica ou
> > juridica
> > dependendo da resposta voce redireciona para outra view com o  form
> > expecifico.
>
> > exemplo de forms que esconderiam os campos supondo que o model seja
> > "Clientes":
>
> > class PessoaJuridicaForm(ModelForm):
> >           class Meta:
>
> > 2008/9/25 jeferson <nash...@gmail.com>

wancharle sebastiao quirino

unread,
Sep 25, 2008, 9:59:58 PM9/25/08
to django...@googlegroups.com
Se voce estiver comecando e ainda estiver usando o django 0.96 eu recomendo fortemente que mude para versao 1.0
pois no 0.96 voce não consegue customizar o admin tanto quanto o 1.0 permite. Assim voce poderia fazer o que voce quer no admin usando forms.
Mas eu acho mais facil criar uma view e usar o template do admin.

Se voce é iniciante pode tentar fazer o que eu fiz:
   Eu aprendi django fazendo o tutorial que ele tem na documentacao.
   O tutorial é composto de 4 partes, a parte que fala de views e templates esta neste link: http://docs.djangoproject.com/en/dev/intro/tutorial03/#intro-tutorial03
   Depois do tutorial li o http://djangobook.com/ e comecei a participar desta lista de discução.

também tem uma versao em portugues do tutorial no site do djangobrasil
http://www.djangobrasil.org/documentacao/

O resto ,do que sei hoje, aprendi  praticando e lendo a documentacao.


2008/9/25 jeferson <nas...@gmail.com>

jeferson

unread,
Sep 26, 2008, 6:17:18 AM9/26/08
to Django Brasil
Wancharle,

Já fiz o tutorial da documentação e estou lendo o Django book. Entendo
os conceitos e um tenho um pouco de prática em views e templates, fora
que é exatamente o que estou estudando no momento =) . Quanto a
versão, estou usando a 1.0.
Se puder me orientar a fazer a view já é o suficiente, porque não sei,
por exemplo, como faria para que ao clicar em "inserir cliente", a
view fosse chamada antes do formulário de cadastro (imagino que seja
configurando o urls.py e informando que o endereço que o botão
"inserir cliente" deve chamar a view especificada), ou até mesmo se eu
faria esses formulários no admin.py, em algum arquivo diferente e
chamaria na view ou se dentro da própria view. Outra coisa é que sou
fraco em template ainda.

Se for possível para você dar o ponta-pé inicial eu me viro no
restante.

Obrigado pela atenção.

On 25 set, 23:59, "wancharle sebastiao quirino" <wancha...@gmail.com>
wrote:
> Se voce estiver comecando e ainda estiver usando o django 0.96 eu recomendo
> fortemente que mude para versao 1.0
> pois no 0.96 voce não consegue customizar o admin tanto quanto o 1.0
> permite. Assim voce poderia fazer o que voce quer no admin usando forms.
> Mas eu acho mais facil criar uma view e usar o template do admin.
>
> Se voce é iniciante pode tentar fazer o que eu fiz:
>    Eu aprendi django fazendo o tutorial que ele tem na documentacao.
>    O tutorial é composto de 4 partes, a parte que fala de views e templates
> esta neste link:http://docs.djangoproject.com/en/dev/intro/tutorial03/#intro-tutorial03
>    Depois do tutorial li ohttp://djangobook.com/e comecei a participar
> desta lista de discução.
>
> também tem uma versao em portugues do tutorial no site do djangobrasilhttp://www.djangobrasil.org/documentacao/
>
> O resto ,do que sei hoje, aprendi  praticando e lendo a documentacao.
>
> 2008/9/25 jeferson <nash...@gmail.com>

wancharle sebastiao quirino

unread,
Sep 26, 2008, 2:33:49 PM9/26/08
to django...@googlegroups.com
Voce deve colocar a url da sua view igual url que o admin chamaria para mostrar a tela dele.
e o include das urls do admin deve vir depois. Assim antes de chamar o admin o django passa pela sua view. Neste caso voce terá que fazer todo o trabalho que o admin faz para voce: validar e salvar os dados na sua view.


Hoje eu herdaria os templates do admin para fazer a pagina html da view, mas como voce ainda esta iniciando voce pode simplesmente copiar o html que o admin gera na view dele. Funciona do mesmo jeito. Eu fazia isso no django 0.96.

Se voce quer apenas salvar os dados voce pode usar generic views para salvar e validar seus dados:
http://docs.djangoproject.com/en/dev/ref/generic-views/#ref-generic-views

Resumindo:
voce vai ter 3 url:
1- a url do admin :  url( '..../admin/sua_app/seu_model/add' , 'sua view')
2- a url de pessoa fisica url("..../sua_url/voce/define" , 'view_que_cadastra_pessoa_fisica')
3- a url de pessoa Juridida url("..../sua_url/voce/define" , 'view_que_cadastra_pessoa_juridica')

as duas ultimas voce pode usar generic-views para não ter que salvar e validar na mão.
a primeira voce faz um post para ela mesma sempre  verficando para qual url deve redirecionar.(se clicou em pessoa fisica -> HttpResponseRedirect('url_de_cadastro_de_pessoa_fisica') e assim por diante)


2008/9/26 jeferson <nas...@gmail.com>

Luiz Aguiar

unread,
Oct 1, 2008, 1:00:25 AM10/1/08
to django...@googlegroups.com
Tem que dar algum import pra usar o exclude?

class GroupForm(ModelForm):
    class Meta:
        model = Group
        exclude ('peoples',)

NameError: name 'exclude' is not defined

---
Luiz Aguiar

Mobile: +55 11 8380-1509
Home:  +55 11 3562-7654

http://www.luizaguiar.com/

Luciano Ramalho

unread,
Oct 1, 2008, 1:03:34 AM10/1/08
to django...@googlegroups.com
2008/10/1 Luiz Aguiar <luiz....@gmail.com>:

> Tem que dar algum import pra usar o exclude?
> class GroupForm(ModelForm):
> class Meta:
> model = Group
> exclude ('peoples',)
> NameError: name 'exclude' is not defined

Faltou colocar um sinal de = entre a palavra exclude a lista
('peoples',). Sem o igual, o Python acha que você tá chamando uma
função "exclude" que não foi definida, quando na verdade você quer
definir um atributo chamado exclude.

[ ]s
Luciano

Luiz Aguiar

unread,
Oct 1, 2008, 11:09:27 AM10/1/08
to django...@googlegroups.com
Nossa, bela comida de bola... rs... valeu cara!

---
Luiz Aguiar

Mobile: +55 11 8380-1509
Home:  +55 11 3562-7654

http://www.luizaguiar.com/



2008/10/1 Luciano Ramalho <luc...@ramalho.org>
Reply all
Reply to author
Forward
0 new messages