Desenvolvendo um Django Admin com actions Personalizadas

By Roberto Lima
Picture of the author
Published on
Django Admin Actions

Uma das características poderosas do Django Admin é a capacidade de adicionar ações personalizadas que permitem aos administradores realizar operações em massa nos registros. Neste artigo, vamos explorar como criar ações personalizadas no Django Admin para melhorar a eficiência da gestão de dados.

O que são actions Personalizadas?

As actions personalizadas no Django Admin permitem que você defina métodos específicos que podem ser aplicados a múltiplos registros selecionados. Isso é útil para operações como ativar/desativar usuários, mudar status de pedidos, entre outros.

Configurando o Django Admin com Ações Personalizadas

Vamos passar pelo processo de adicionar ações personalizadas em um modelo de exemplo, que neste caso será um modelo de Produto.

1. Definindo o Modelo

Primeiro, teremos um modelo simples de produto:

from django.contrib import admin
from .models import Product

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'is_active')
    actions = ['activate_products', 'deactivate_products']

    def activate_products(self, request, queryset):
        """Ativa todos os produtos selecionados."""
        queryset.update(is_active=True)
        self.message_user(request, "Produtos selecionados foram ativados.")
    activate_products.short_description = "Ativar produtos selecionados"

    def deactivate_products(self, request, queryset):
        """Desativa todos os produtos selecionados."""
        queryset.update(is_active=False)
        self.message_user(request, "Produtos selecionados foram desativados.")
    deactivate_products.short_description = "Desativar produtos selecionados"

2. Crie um arquivo admin.py

Se você ainda não tiver um arquivo admin.py em sua aplicação, crie um. Esse arquivo é onde você registrará seu modelo e adicionará ações personalizadas.

3. Registre seu Modelo no Admin

No arquivo admin.py, importe seu modelo e registre-o no Django Admin.

from django.contrib import admin
from .models import Product

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'is_active')

4. Adicione a action Personalizada

Agora, você pode adicionar uma ação personalizada. Vamos criar uma ação que permite ativar ou desativar produtos selecionados. No bloco da classe ProductAdmin, adicione um método que represente a ação e inclua-o na lista de ações.

class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'is_active')
    actions = ['activate_products', 'deactivate_products']

    def activate_products(self, request, queryset):
        """Ativa todos os produtos selecionados."""
        queryset.update(is_active=True)
        self.message_user(request, "Produtos selecionados foram ativados.")
    activate_products.short_description = "Ativar produtos selecionados"

    def deactivate_products(self, request, queryset):
        """Desativa todos os produtos selecionados."""
        queryset.update(is_active=False)
        self.message_user(request, "Produtos selecionados foram desativados.")
    deactivate_products.short_description = "Desativar produtos selecionados"

5. Mensagens para o Usuário

Nos métodos de ação, você pode usar self.message_user para enviar mensagens ao admin, confirmando que a ação foi realizada. Isso melhora a experiência do usuário.

6. Teste a action

  • Acesse o Django Admin: Inicie seu servidor (python manage.py runserver) e acesse a interface do Django Admin.

  • Navegue para o Modelo: Vá até a seção correspondente ao seu modelo (neste caso, "Produtos").

  • Selecione Produtos: Selecione um ou mais produtos usando as caixas de seleção.

  • Escolha uma Ação: No menu suspenso de ações, selecione "Ativar produtos selecionados" ou "Desativar produtos selecionados" e clique em "Executar".

  • Verifique os Resultados: Após a execução, você verá a mensagem de confirmação e o estado dos produtos selecionados será atualizado conforme a ação escolhida.

7. Personalize Ainda Mais (Opcional)

Você pode personalizar suas ações adicionando filtros, verificações de permissão ou implementando ações ainda mais complexas, conforme necessário para o seu projeto.

Conclusão

Esse passo a passo fornece uma visão clara de como construir uma ação personalizada no Django Admin. Aproveitando essa funcionalidade, você pode aumentar a eficiência da administração do seu site e tornar a experiência do usuário mais agradável.

Documentação do Django Admin

Fique atento

Quer saber mais sobre JavaScript e Python?
Receba os melhores artigos sobre desenvolvimento em sua caixa de entrada!