07 Admin Streaming
O Django Admin é uma ferramenta robusta e personalizável, que permite gerenciar os dados do banco e configurar o backend da aplicação através de uma interface administrativa. A seguir, estão algumas das principais características de personalização do Django Admin, que tornam a ferramenta ainda mais poderosa para desenvolvedores e administradores:
1. ModelAdmin: Customização de Exibição dos Modelos
Através do ModelAdmin
, você pode controlar a forma como cada modelo é exibido no Django Admin. Algumas personalizações incluem:
list_display
: Define os campos que serão exibidos na lista de registros do modelo. Por exemplo:
class ContentAdmin(admin.ModelAdmin):
list_display = ('title', 'content_type', 'is_public', 'created_at')
list_filter
: Adiciona filtros laterais para facilitar a segmentação dos registros. Exemplo:
search_fields
: Permite adicionar um campo de busca para procurar registros específicos. Exemplo:
2. Campos de Ordenação
Com a opção ordering
, você pode definir a ordem padrão em que os registros serão exibidos.
3. Campos de Edição Inline
Django Admin permite editar objetos relacionados dentro de um formulário de outro objeto, usando inlines. Por exemplo, se você tem um modelo Comment
relacionado a um Content
, pode configurar o Comment
como inline no ContentAdmin
.
class CommentInline(admin.TabularInline):
model = Comment
extra = 1 # Número de campos de comentário exibidos inicialmente
class ContentAdmin(admin.ModelAdmin):
inlines = [CommentInline]
4. Personalização dos Formulários de Edição
Você pode definir quais campos serão exibidos na página de edição, bem como organizá-los em seções:
fields
: Define os campos que estarão disponíveis no formulário.
fieldsets
: Agrupa os campos em seções, permitindo adicionar cabeçalhos de seção:
fieldsets = (
('Informações Básicas', {'fields': ('title', 'description')}),
('Detalhes do Arquivo', {'fields': ('file_url', 'thumbnail_url')}),
)
5. Ações Personalizadas
Com o Django Admin, você pode definir ações customizadas para executar operações em lote nos registros selecionados. Por exemplo, uma ação para marcar conteúdos como públicos:
def make_public(modeladmin, request, queryset):
queryset.update(is_public=True)
make_public.short_description = "Marcar conteúdos como públicos"
class ContentAdmin(admin.ModelAdmin):
actions = [make_public]
6. Filtros e Campos de Busca Personalizados
Além dos filtros de lista, você pode criar filtros personalizados para necessidades específicas e adicionar campos de busca dinâmicos.
- Filtros Personalizados: Use o
SimpleListFilter
para definir filtros avançados.
from django.contrib.admin import SimpleListFilter
class PublicContentFilter(SimpleListFilter):
title = 'public'
parameter_name = 'is_public'
def lookups(self, request, model_admin):
return [('yes', 'Public'), ('no', 'Private')]
def queryset(self, request, queryset):
if self.value() == 'yes':
return queryset.filter(is_public=True)
if self.value() == 'no':
return queryset.filter(is_public=False)
class ContentAdmin(admin.ModelAdmin):
list_filter = (PublicContentFilter,)
7. Permissões e Controle de Acesso
O Django Admin permite definir permissões específicas por modelo e campo, como:
- Permissões por modelo: No
ModelAdmin
, você pode restringir quem pode visualizar, adicionar, editar ou excluir registros. - Controle de campos específicos: Restringe quem pode ver ou editar campos específicos. Isso é feito criando métodos como
has_change_permission
.
8. Edição em Lote
A edição em lote facilita a atualização rápida de registros selecionados ao permitir que se aplique ações de uma só vez.
9. Customização de Templates e CSS
O Django permite que você substitua os templates do admin ou altere o CSS para refletir um estilo específico, modificando o visual da interface administrativa.
Exemplo Completo
from django.contrib import admin
from .models import Content, Comment
class CommentInline(admin.TabularInline):
model = Comment
extra = 1
class ContentAdmin(admin.ModelAdmin):
list_display = ('title', 'content_type', 'is_public', 'created_at')
list_filter = ('content_type', 'is_public', 'created_at')
search_fields = ('title', 'description')
ordering = ['-created_at']
inlines = [CommentInline]
actions = [make_public]
fieldsets = (
('Informações Básicas', {'fields': ('title', 'description')}),
('Detalhes do Arquivo', {'fields': ('file_url', 'thumbnail_url')}),
)
admin.site.register(Content, ContentAdmin)
Com essas configurações, o Django Admin se torna uma interface poderosa para a administração do seu app de streaming, com filtros, personalizações e uma aparência adaptada ao fluxo de trabalho. Isso otimiza o gerenciamento de conteúdo, facilitando a navegação e a organização dos registros.