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