Configurando o Django admin

Matheus Budkewicz
horaDeCodar
Published in
6 min readJan 11, 2019

Neste artigo veremos como iniciar o admin no Django e ainda adicionaremos algumas funcionalidades como filtro e busca para os nossos registros.

Fala aí, tudo bem? este post faz parte de um projeto que estamos construindo sobre Django, o que você vai ler a seguir é é uma continuação de uma série de artigos sobre esse assunto, se você quiser ficar por dentro dos outros posts confira abaixo!

Ei você leitor! Criei um novo blog para os meus conteúdos, pois o Medium mesmo sendo uma excelente plataforma, me limitava em alguns recursos, que acredito que podem atrapalhar seu aprendizado/leitura…

Você pode acessar cliquando aqui!

Obrigado pela atenção, e boa leitura! :)

Conheça nosso canal no YouTube, com cursos gratuitos de qualidade e vídeos semanais, para acessar o canal clique aqui!

Posts anteriores e repositório:

Se você caiu direto neste post, saiba que esta é a sexta parte do tutorial, confira o resto da série:

  1. Instalando Django 2 e criando um projeto;
  2. Criando rotas e views;
  3. Introdução aos templates do Django;
  4. Adicionado Bootstrap ao projeto;
  5. Criando um model e entendendo migrations;

Para quem quer clonar o projeto ou dar um fork clique aqui!

Para você que caiu de paraquedas no meio deste tutorial:

Caso você queira só aprender como funciona o admin do Django, peço que antes de seguir para a próxima etapa, digite o seguinte comando no seu terminal, dentro de um projeto que você tenha, na pasta que se encontra o arquivo manage.py:

python manage.py migrate

Com este comando você irá migrar os dados de admin do Django que estão nos models para tabelas.

Porém, você não terá o nosso model Post que criamos no post passado, recomendo fortemente que o leia a fim de criar este model e poder acompanhar normalmente.

Entretanto com o passo acima você já ganha um model de usuários que tem alguns atributos, e já serve para começar.

Continuando a saga:

Bom, nós no último post criamos o model Post e as migrations, agora temos acesso ao admin, digite o comando para rodar o servidor no terminal:

python manage.py runserver

E vá até a url que o Django indicou, provalvemente 127.0.0.1:8000 e acesse /admin, você verá uma página de login como esta:

Como não temos usuário ainda, vamos a linha de comando digitar o seguinte comando para criar um:

python manage.py createsuperuser

Um detalhe: como expliquei acima para quem chegou de paraquedas, o Django com as migrations de admin já cria um model de usuários, assim nos livramos dessa preocupação e podemos ir trabalhando dentro do admin.

Insira as credenciais e informações que o Django solicita:

E…

Basta acessar o Django admin com as credenciais criadas.

Perceba que lá dentro são mostrados alguns models, como o de usários criado pelo Django, mas o nosso de Post do projeto não, então vamos ajustar isso.

Só que antes, vamos fazer um pequeno upgrade no código, criamos o model no tutorial passado mas não definimos um autor para o post e como todo post tem um autor precisamos fazer isso agora.

Abra o arquivo models.py do blog e deixe-o assim:

from django.db import modelsfrom django.contrib.auth.models import Userclass Post(models.Model):POST_STATUS = ((‘active’, ‘Ativo’),(‘draft’, ‘Rascunho’))title = models.CharField(max_length=200)body = models.TextField()author = models.ForeignKey(User, on_delete=models.CASCADE)created_at = models.DateField(auto_now_add=True)updated_at = models.DateField(auto_now=True)status = models.CharField(max_length=15, choices=POST_STATUS)

Importamos o model User do próprio Django, isso é bom porque só precisamos cuidar da hierarquia e permissão de acesso, que já vem pronto no Django também, mas nós podemos selecionar para cada usuário, assim não precisamos separar usuários comuns de administradores.

Além disso, estamos criando o atributo author para a nossa classe Post, uma outra coisa nova em relação a aula passada é que agora estamos utilizando ForeignKey que é a conhecida chave estrangeira, linkando nosso post a um usuário, além disso o atributo on_delete, que quando utilizado com CASCADE significa que se deletarmos um usuário deletaremos todos os posts dele.

Agora rode os comandos de migração:

python manage.py makemigrationspython manage.py migrate

Pronto, tudo certo, agora vamos continuar o tutorial da parte administrativa.

Abra o arquivo admin.py do aplicativo blog e deixe-o assim:

from django.contrib import adminfrom .models import Postadmin.site.register(Post)

Aqui estamos importando o Post, nosso model, para o admin, agora recarregue novamente a página e veja que o Post apareceu!

Agora vamos registrar alguns posts clicando em Add.

Caso você tenha adicionado alguns, perceba que a descrição fica desse jeito bem bizarro:

Isso acontece porquê não informamos ao Django o que queremos mostrar ali, vamos ajustar isso alterando nosso arquivo models.py de blog, insira dentro da classe Post o seguinte código:

def __str__(self):return self.title

A função __str__ retornará para onde quer que nosso objeto seja chamado, no admin ocorre mais vezes, um valor que escolhemos da nossa classe, que neste caso foi o título do post, como um título para identificarmos ela.

Veja agora como ficou a listagem:

Bem mais claro, certo?

obs: Caso após alguma alteração o Django não mostre corretamente as informações: reinicie o servidor que startamos sempre que vamos trabalhar com o projeto, isso serve também para quando adicionarmos algum arquivo.

Atributos no admin e busca:

Imagine agora que nosso blog cresce do dia para a noite e tem 10000 posts, como vamos procurar um antigo para editar? como vamos filtrar por alguma característica dele? excluir um determinado post?

É aí que o Django mostra mais uma de suas funcionalidades built-in para nós, vamos abrir o arquivo admin.py de blog, e deixa-lo assim:

from django.contrib import adminfrom .models import Postclass PostAdmin(admin.ModelAdmin):list_display = (‘title’, ‘author’, ‘created_at’, ‘updated_at’, ‘status’)search_fields = [‘title’]prepopulated_fields = {“slug”: (“title”,)}admin.site.register(Post, PostAdmin)

Bom, aqui adicionamos uma classe chamada PostAdmin com uma variável chama list_display que irá criar uma lista de atributos a ser exibida, no caso escolhemos título, autor, data de criação, atualização e status.

Depois criamos search_fields, que determinará que campos serão utilizados para nossa busca, escolhemos título pois é um bom atributo para filtro por busca.

E por fim com prepopulated_fields o campo slug ficará semelhante ao título quando digitarmos este.

Ex:
Titulo = Um grande post
Slug = um-grande-post

Além disso registramos essa classe no admin também.

Veja como ficou:

Conclusão:

Neste artigo vimos como criar o admin do Django, os passos são os seguintes: fazer a migração com makemigrate e depois criar um usuário para acessar comcreatesuperuser.

Mas lembre-se que se você criou um model deve antes usar o makemigrations.

Depois disso registramos nosso model para aparecer na área administrativa e adicionamos alguns posts.

Por fim adicionamos recursos de busca e mostramos alguns atributos no admin para que seja possível encontrar o post que queremos mais facilmente.

E não para por aí, o admin do Django nos oferece muitos recursos poderosos ainda, quem sabe num próximo post a gente não avance nele?

Bom, por hoje é só pessoal, obrigado por lerem até o fim, se possível se inscrevam na minha lista e compartilhem o artigo com os amigos, me ajuda bastante.

Caso tenham alguma dúvida, escrevem na área de comentários abaixo.

Obrigado e até o próximo!

--

--