1
resposta

Django admin

Olá, e possível criar vários admin, e fazer com que nenhum desses admin tenha acesso aos dados um do outro? Com isso cada admim poderia criar usuários abaixo deles, e esses usuários teriam acesso aos dados do admin que os criou, mas não aos dados de outro admin, é possível? Se sim, como?

1 resposta

Fala Isaac, como vai?

Pergunta sensacional. Vamos lá: é possível sim e vou deixar o passo a passo:

  • Você pode configurar o Admin de cada app da seguinte forma:
from django.contrib.admin import AdminSite
from financeiro.models import Financeiro

class FinanceiroAdminSite(AdminSite):
    site_header = "Admin do Financeiro"
    site_title = "O portal de admin do Financeiro"
    index_title = "Seja bem vindo ao Admin Financeiro"

financeiro_admin = FinanceiroAdminSite(name='financeiro_admin')

# registrando os modelos neste Admin
financeiro_admin.register(Financeiro)
  • Supondo que eu tenha outro app com seu prórpio admin.py, posso registrar da mesma forma:
from django.contrib.admin import AdminSite
from eventos.models import Evento

class EventosAdminSite(AdminSite):
    site_header = "Admin de Eventos"
    site_title = "O portal de admin de Eventos"
    index_title = "Seja bem vindo ao Admin de Eventos"

eventos_admin = EventosAdminSite(name='eventos_admin')

# registrando os modelos neste Admin
eventos_admin.register(Evento)
  • A única configuração necessária seria adicionar cada admin no urls.py do projeto, como ilustra o código abaixo:
from django.contrib import admin
from django.urls import path
from eventos.admin import eventos_admin
from financeiro.admin import financeiro_admin

urlpatterns = [
    path('admin/', admin.site.urls),
    path('eventos-admin/', eventos_admin.urls),
    path('financeiro-admin/', financeiro_admin.urls),
]

Criei um repositório com o exemplo completo como referência. Espero ter ajudado. Bons estudos e sucesso Isaac!

: )