Por Luferat em 08/11/2026
Agora precisamos adaptar o Django Admin para trabalhar com nosso User personalizado e respeitar os recursos de soft delete.
O Django já possui uma configuração administrativa própria para usuários, chamada UserAdmin.
Vamos aproveitá-la em vez de criar tudo novamente.
Siga os passos com atenção:
Abra blog/admin.py e altere todo o conteúdo para:
Mantenha Ctrl pressionada ao clicar no link.
Clique no botão Raw para facilicar copiar e colar os códigos.
Essa configuração:
Remove os campos first_name e last_name do formulário.
Utiliza nosso campo name.
Exibe os dados adicionais.
Permite visualizar e alterar is_deleted.
Mantém as permissões e os recursos de autenticação originais do Django.
Aqui precisamos de um pequeno ajuste adicional.
Por padrão, o Admin utiliza User.objects, que filtra os usuários excluídos. Mas, adicionamos o método abaixo dentro da classe UserAdmin:
def get_queryset(self, request):
return User.all_objects.all()
Admin exibirá todos os usuários, independentemente de is_deleted. Ele permite que o administrador consiga encontrar os usuários apagados e restaurá-los. Isso também permite desmarcar is_deleted e recuperar um usuário.
Se quiser "desativar" essa feature, comente ou remova o trecho acima.
Também fizemos algo semelhante com os posts. Temos no final de PostAdmin o método:
def get_queryset(self, request):
return Post.all_objects.all()
Assim, o administrador também poderá visualizar e restaurar posts excluídos.
Mais uma vez, para desativar isso, comente ou remova o método.
Lembre-se que posts de usuários apagados tembém são considerados apagados!
Como nosso UserManager é o manager padrão (objects), o próprio Django já respeita nossa regra durante a autenticação. Na prática:
Situação Pode fazer login?
Usuário normal, não excluído Sim
Usuário com is_deleted=True Não
Usuário com is_active=False Não
Superusuário não excluído Sim
Não precisamos modificar o sistema de autenticação do Django!
Depois dessas alterações, teremos:
Usuários: o Admin mostra todos, inclusive os excluídos.
Posts: o Admin mostra todos, inclusive os excluídos.
Consultas normais: continuam ignorando registros excluídos.
Autenticação: usuários excluídos não conseguem entrar.
Restauração: basta desmarcar is_deleted no Admin.
Essa separação entre o comportamento das consultas normais e o comportamento administrativo é importante.
O administrador precisa enxergar os registros excluídos justamente para poder recuperá-los.
Só garanta que "somente o administrador" tem acesso ao recurso.
Reinicie o servidor, acesse o painel administrativo pelo link http://localhost:8000/admin, logue e teste tudo!