Creio que você possa sobscrever seu o método __init__, que é o construtor,
do seu Form, com isso você pode adicionar ao campo desejado o
required=False.
Não testei nada, mas acho que seja algo do tipo,
"sua_variavel_de_controle", vc passa ela por argumento na sua view que
chama o form, quando for o caso do campo não ser required, vc passa ela
como parametro pra classe do seu form, algo como:
seu_form = SeuForm(sua_variavel_de_controle=True)
Quando não for esse caso, ou seja, o campo for obrigatório vc faz isso:
seu_form = SeuForm()
Ou seja, não passa a variável.
Em 14 de novembro de 2012 15:55, leonardo <leonardo.s.c...@gmail.com>escreveu:
> Pessoal,
> Tenho duas situações em que preciso usar exatamente o mesmo form.
> Só que em uma, um dos campos é obrigtaório e na outra não.
> Conhecem alguma solução para fazer isto sem duplicar o form só por causa
> de um atributo required=False ?
> Abs,
> --
--
- Software Engineering student at the Universidade Federal do Rio Grande
do Norte;
- Front-end Designer and Developer;
- Python/Django Developer at the multmeio.com.br.
> Tenho duas situações em que preciso usar exatamente o mesmo form.
> Só que em uma, um dos campos é obrigtaório e na outra não.
Então não é "exatamente" o mesmo form ;-)
> Conhecem alguma solução para fazer isto sem duplicar o form só por causa de
> um atributo required=False ?
Que tal usar herança? O form original é uma classe. Crie uma subclasse
apenas para sobrescrever o campo em questão e pronto. Duas linhas de
código, extremamente legível. Não precisa implementar nenhum método.
Foi por situações assim que os inventores da OO inventaram herança.
[ ]s
Luciano
PS. Eu não gosto muito de usar herança com models no Django, porque o
modelo relacional não casa bem com isso, por isso o Django oferece N
maneiras de fazer herança de models, todas mais ou menos
insatisfatórias. Mas no caso de Forms, funciona muito bem.
> 2012/11/14 leonardo <leonard...@gmail.com <javascript:>>: > > Tenho duas situações em que preciso usar exatamente o mesmo form. > > Só que em uma, um dos campos é obrigtaório e na outra não.
> Então não é "exatamente" o mesmo form ;-)
> > Conhecem alguma solução para fazer isto sem duplicar o form só por causa > de > > um atributo required=False ?
> Que tal usar herança? O form original é uma classe. Crie uma subclasse > apenas para sobrescrever o campo em questão e pronto. Duas linhas de > código, extremamente legível. Não precisa implementar nenhum método.
> Foi por situações assim que os inventores da OO inventaram herança.
> [ ]s > Luciano
> PS. Eu não gosto muito de usar herança com models no Django, porque o > modelo relacional não casa bem com isso, por isso o Django oferece N > maneiras de fazer herança de models, todas mais ou menos > insatisfatórias. Mas no caso de Forms, funciona muito bem.
> Valeu a solução funcionou mto bem. Isso que é pensar orientado a objetos rs
> luan,
> Valeu, a solução parece ótima tb. Mas como estou utilizando o CBV
> FormView, não instancio o form para passar argumento no inicializador.
> Abs,
> Em quarta-feira, 14 de novembro de 2012 18h19min37s UTC-2, Luciano Ramalho
> escreveu:
>> 2012/11/14 leonardo <leonard...@gmail.com>:
>> > Tenho duas situações em que preciso usar exatamente o mesmo form.
>> > Só que em uma, um dos campos é obrigtaório e na outra não.
>> Então não é "exatamente" o mesmo form ;-)
>> > Conhecem alguma solução para fazer isto sem duplicar o form só por
>> causa de
>> > um atributo required=False ?
>> Que tal usar herança? O form original é uma classe. Crie uma subclasse
>> apenas para sobrescrever o campo em questão e pronto. Duas linhas de
>> código, extremamente legível. Não precisa implementar nenhum método.
>> Foi por situações assim que os inventores da OO inventaram herança.
>> [ ]s
>> Luciano
>> PS. Eu não gosto muito de usar herança com models no Django, porque o
>> modelo relacional não casa bem com isso, por isso o Django oferece N
>> maneiras de fazer herança de models, todas mais ou menos
>> insatisfatórias. Mas no caso de Forms, funciona muito bem.
- Software Engineering student at the Universidade Federal do Rio Grande
do Norte;
- Front-end Designer and Developer;
- Python/Django Developer at the multmeio.com.br.
Só para constar, descobrir que há sim, como passar argumentos para um form em um CBV FormView.
Fiz assim, para passar o usuário em sessão como parâmetro:
> Ata, que bom então a melhor saída é realmente a herança então :D
> Em 14 de novembro de 2012 20:04, leonardo <leonard...@gmail.com<javascript:>
> > escreveu:
>> Luciano,
>> Valeu a solução funcionou mto bem. Isso que é pensar orientado a objetos >> rs
>> luan,
>> Valeu, a solução parece ótima tb. Mas como estou utilizando o CBV >> FormView, não instancio o form para passar argumento no inicializador.
>> Abs,
>> Em quarta-feira, 14 de novembro de 2012 18h19min37s UTC-2, Luciano >> Ramalho escreveu:
>>> 2012/11/14 leonardo <leonard...@gmail.com>: >>> > Tenho duas situações em que preciso usar exatamente o mesmo form. >>> > Só que em uma, um dos campos é obrigtaório e na outra não.
>>> Então não é "exatamente" o mesmo form ;-)
>>> > Conhecem alguma solução para fazer isto sem duplicar o form só por >>> causa de >>> > um atributo required=False ?
>>> Que tal usar herança? O form original é uma classe. Crie uma subclasse >>> apenas para sobrescrever o campo em questão e pronto. Duas linhas de >>> código, extremamente legível. Não precisa implementar nenhum método.
>>> Foi por situações assim que os inventores da OO inventaram herança.
>>> [ ]s >>> Luciano
>>> PS. Eu não gosto muito de usar herança com models no Django, porque o >>> modelo relacional não casa bem com isso, por isso o Django oferece N >>> maneiras de fazer herança de models, todas mais ou menos >>> insatisfatórias. Mas no caso de Forms, funciona muito bem.
> - Software Engineering student at the Universidade Federal do Rio > Grande do Norte; > - Front-end Designer and Developer;
> - Python/Django Developer at the multmeio.com.br.