segunda-feira, 24 de agosto de 2009

Novos recursos do Admin - actions



Quando é necessário fazer uma atualização com mais um registro? Entrar um a um, editar e salvar? Existe um meio mais prático e eficiente pra fazer tais tarefas repetitivas.

Eis que surge o actions. Na versão do trunk do Django ele já vem nativo com a opção remover todos os registros selecionados, muito útil quando era preciso apagar vários ao mesmo tempo.

Essa nova funcionalidade não para por aqui. Também é possível colocar ações customizadas dentro desse fantástico recurso. Vejamos como.

Vejamos um exemplo:

Muitos os portais de conteúdo possuem a funcionalidade de colocar um determinado conteúdo, uma nóticia por exemplo, em destaque. Para isso no seu módulo de notícia, provavelmente terá o campo:

destaque = models.BooleanField(default=False)


Suponhamos que seja necessário colocar 5 noticias em destaque. Entrar uma a uma, não é uma opção, porquê como sempre digo, mais que dois é muito. Vejamos como ficaria de uma forma eficiente.

Dentro do seu admin.py, vá até a classe do admin do módulo que deseja implementar o actions, NoticiaAdmin por exemplo, e crie já as duas funções:





Note que não é necessário criar o remover selecionado, pois ele já é nativo.


A coisa toda acontece na linha 28. Perceba que não é necessário correr um for para pegar todas as notícias selecionadas. Ele simplesmente faz o update em todos os objetos de notícia que forem selecionados através do queryset.


Isto pode ser feito para atualizações em massa, duplicações, e quaisquer outros recursos que conseguir pensar para um conjunto de dados do mesmo tipo.


hasta!

Nenhum comentário:

Postar um comentário