Botões de deletar no Admin do Django – Agora com mais “inteligência”


Bom dia !!!

Outro dia postei um tuto ensinando a colocar um botão de deletar no admin, mas uma coisa me incomodou!

Ora bolas, pra que mesmo eu tenho que ficar procurando qual o link pra colocar na função que retorna o link para deletar o objeto desejado!?

Pense, o admin faz automático porque eu não posso fazer…
Aqui é o link do post antigo

Agora, mostrarei como ficou a minha função! 😉
Seguindo a mesma linha do tutorial anterior, basta alterar a função para que a mesma fique assim!

def deletar(self,object):
opts = self.model._meta
app_label = opts.app_label # Aqui eu pego o label da aplicacao
className = opts.object_name.lower() # aqui pego o nome da classe 😉
return ‘<a href=/admin/%s/%s/%s/delete/>Deletar<a/>’ %(app_label, className, object.id)
deletar.allow_tags = True

def deletar(self,object):

opts = self.model._meta

app_label = opts.app_label # Aqui eu pego o label da aplicacao

className = opts.object_name.lower() # aqui pego o nome da classe 😉

return ‘<a href=/admin/%s/%s/%s/delete/>Deletar<a/>’ %(app_label, className, object.id)

deletar.allow_tags = True

Façam bom proveito!!!

Abraços!

Fred Chevitarese – GNU/Linux

Anúncios

8 Respostas to “Botões de deletar no Admin do Django – Agora com mais “inteligência””

  1. Fred, mais uma vez você me ajudou! \o/

    Só queria saber de uma coisa, como que ficou as suas urls.py? Pois o meu ainda ta no braço, tipo:

    url(r’^gerenciador/relatorio/pdf/(?P\d+)/$’, ‘emissao_relatorio’, name=’emissao_relatorio’),

  2. Fred,

    agora tenho problemas no sistema em produção…

    Fiz o seguinte, em meu dominio criei um subdominio onde instalei minha aplicação, e no urls.py do projeto defini que que o admin seja a página principal dessa maneira:

    (r’^’, include(admin.site.urls)),

    Até tudo joia! ;D

    Ai implementei igualmente no meu arquivo admin.py, só que no meu caso é para gerar um pdf.

    def relatorio(self, object):
    opts = self.model._meta
    app_label = opts.app_label # Aqui eu pego o label da aplicacao
    className = opts.object_name.lower() # aqui pego o nome da classe

    return ‘ Gerar Impressão ‘ % (app_label, className, object.id)
    relatorio.allow_tags = True

    e na minha view eu pego esse valor e gero o pdf.

    Para gerar o pdf no meu arquivo urls.py da app criei a url para enviar para a view que gera o pdf.

    e para isso funcionar tive que acrescentar a seguinte linha no urls.py do projeto

    r”, include(‘projeto.app.urls’)),
    (r’^’, include(admin.site.urls)),

    Tudo isso funciona certinho em desenvolvimento onde rodo localhost, porém subi a aplicação para produção e me da o seguinte erro:

    ValueError at /gerenciador/relatorio/pdf/217/

    invalid literal for int() with base 10: ‘pdf/217’

    Imagino que esse erro de por causa do subdominio e teria que mudar algo no urls.py ou no admin.py, mas fiz tentativas e não tive sucesso.

    Pode me ajudar?

  3. Então Fred, creio que não seja, pois roda perfeitamente local.

    O que acontece é que a url ta enviando para a view o seguinte:

    ‘pdf/207’ onde deveria enviar somente ‘207’

  4. Six years later… 😛
    E se eu quiser incluir um botão para incrementar a quantidade do ítem?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: