Validação Admin

24 views
Skip to first unread message

Luis Eduardo Vilella

unread,
May 18, 2013, 11:27:26 PM5/18/13
to django...@googlegroups.com
Senhores Boa Noite!

Estou com um problema de validação onde eu preciso validar meu form juntamente as inlines, vou explicar melhor.

class TotalizadorDaManutencaoInline(admin.TabularInline):

    model = TotalizadorDaManutencao
    extra = 1
    exclude = ['totalizador']
    form = TotalizadorDaManutencao_Form


class ManutencaoDoEquipamentoAdmin(admin.ModelAdmin):
    inlines = [
        TotalizadorDaManutencaoInline,
    ]
 
    form = ManutencaoDoEquipamento_Form

Tenho o admin de manutenção, para fazer validações eu direciono para o form que eu desejo, e lá valido normalmente, tanto para o "form principal" manutenção, como para as inlines. Porem tenho uma regra, que se a manutenção estiver concluída, eu preciso ter no mínimos 2 inlines, uma de totalizador inicial e outra de final, pode ter mais, e para cada inicial é necessário um final.(*Inicial e final é selecionado na inline).
Tentei validar no clean no ManutencaoDoEquipamento_Form, pegando pelo related_manager, mas não é possível, pois só esta disponível depois que eu salva, pelo clean do 
TotalizadorDaManutencao_Form tenho acesso a manutenção, mais não tenho aos outros inlines.

**Não sei se fui claro, qualquer coisa tento explicar melhor.

Leonardo da Costa Santos

unread,
May 19, 2013, 5:18:08 PM5/19/13
to django...@googlegroups.com
Já tentou editar o formset do inline, e nele fazer a validação? A ideia seria essa:

Cria o formset e edita o clean, no formset você vai ter acesso a todas as instancias de form de cada inline.

from django.core.exceptions import ValidationError
from django.forms.models import BaseInlineFormSet

class TotalizadorDaManutencaoFormSet(BaseInlineFormSet):
    def clean(self):
        super(TotalizadorDaManutencaoSet, self).clean()
        for form in self.forms:
           #Faz toda a validação
           #raise forms.ValidationError(u"Retorna o erro!")


No inline, basta adicionar:

class TotalizadorDaManutencaoInline(admin.TabularInline):
    ...
    formset = TotalizadorDaManutencaoFormSet

Atenciosamente,

Leonardo da Costa Santos
Desenvolvedor na SODAVirtual
Bacharel em Sistemas de Informação pela FIP


2013/5/19 Luis Eduardo Vilella <luivi...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Luis Eduardo Vilella

unread,
May 23, 2013, 8:58:43 AM5/23/13
to django...@googlegroups.com
Leonardo desculpe a demora do feedback.
A solução proposta serviu perfeitamente ao que precisava, muito obrigado!
Reply all
Reply to author
Forward
0 new messages