Primeiras aulas do curso Integração de modelos no Django: Filtros, buscas e admin

Integração de modelos no Django: Filtros, buscas e admin

Ajustando o Django admin - Introdução

Boas vindas!

Sou o instrutor Guilherme Lima do curso Integração de Modelos no Django 2.

Anteriormente, elaboramos um modelo na primeira parte do treinamento, e agora iremos integrá-lo a um novo que será criado em nossas aulas.

Além disso, faremos algumas configurações para deixar nosso Django Admin muito mais confortável para editarmos nossas receitas.

Daremos continuidade ao desenvolvimento da aplicação, seguindo boas práticas de programação. Aprimoraremos ainda mais o visual, adicionando imagens para cada receita na página principal e um campo de busca por palavras.

Criaremos um outro app para manter armazenadas as pessoas que postaram a receita no Django Admin, que terá um display muito mais agradável. Na parte de receitas, aprenderemos como alterar algumas configurações para termos filtros.

Com isso, aprofundaremos ainda mais nossos conhecimentos sobre Django.

Os pré-requisitos para este curso são ter feito a primeira parte do treinamento, ter noções básicas de Python, HTML, CSS e JavaScript além de darmos continuidade ao que começamos a aprender sobre PostgreSQL.

Ao final de nossas aulas, poderemos criar app mais poderosas utilizando este framework de Django com a linguagem Python, o que é muito relevante para todos que se interessam em desenvolver aplicações web com essas ferramentas.

Vamos lá!

Ajustando o Django admin - Listando receitas por nome

Daremos continuidade ao desenvolvimento da aplicação Alura Receita.

Começamos pela atualização de uma receita, como a "Sopa de legumes" por exemplo: queremos modificar o tempo de preparo de 40 para 30 minutos e o rendimento de 6 para 4 porções.

Para isso, acessamos o Admin adicionando /admin ao endereço do navegador, clicamos no link "Receitas" para visualizar a lista com os itens, abrimos a "Receita object" correta e alteramos as informações dos campos finalizando em "Salvar". Retornamos à página da aplicação e atualizamos para ver se os dados foram alterados corretamente.

Porém, a exibição desses itens na lista de Receitas em Admin não estão informativos o suficiente para saber a quais receitas correspondem, e precisamos clicar em cada um para descobrir do que se tratam, o que é pouco prático principalmente pensando no crescimento constante dessa lista. O ideal seria visualizar o id e o nome para ficar claro.

Indo ao nosso código no Visual Studio, acessamos nosso app de "receitas" e abrimos o arquivo admin.py. Observamos que passamos nosso modelo Receita como argumento para admin.site.register(), e podemos criar uma nova classe para este chamada ListandoReceitas() que recebe admin.ModelAdmin. Dentro desta, passamos uma edição para o display da nossa lista pelo código list_display, indicando que queremos o 'id' e o 'nome_receita', o qual deve ser o mesmo presente em models.py.

De volta ao Admin do Django, atualizamos a página com a lista e não vemos nenhuma diferença; isso se deu porque criamos a classe ListandoReceitas() e ainda não a passamos ao admin.site.register() quando registramos a aplicação. Além de fazer o registro do modelo, queremos também a configuração do display que acabamos de implementar.

from django.contrib import admin
from .models import Receita

class ListandoReceitas(admin.ModelAdmin):
    list_display = ('id', 'nome_receita')

admin.site.register(Receita, ListandoReceitas)

Salvamos e voltamos à página para atualizar e ver que agora são apresentados os id e nomes das receitas na lista de Admin.

Se quisermos exibir também outros campos como a categoria e o tempo de preparo por exemplo, basta adicionar 'categoria' e 'tempo_preparo' ao list_display, ou qualquer outro atributo do modelo. Desta forma, está muito mais claro saber qual item corresponde a qual receita.

Para acessarmos os itens da lista, devemos clicar somente nos números de id, mas é interessante podermos transformar os nomes das receitas em links de acesso também. Para isso, basta adicionar list_display_link sendo igual a id e 'nome_receita' na classe ListandoReceitas().

from django.contrib import admin
from .models import Receita

class ListandoReceitas(admin.ModelAdmin):
    list_display = ('id', 'nome_receita', 'categoria', 'tempo_preparo')
    list_display_links = ('id', 'nome_receita')

admin.site.register(Receita, ListandoReceitas)

Salvando o arquivo com estas configurações, podemos clicar também nos nomes das receitas para acessá-las. Inclusive, podemos fazer edições nos campos para testar a atualização.

Com tudo funcionando corretamente, podemos seguir adiante.

Ajustando o Django admin - Busca, Filtros e paginação

No passo anterior, alteramos nosso código para que nossos itens sejam visualizados de forma bem mais clara na lista do Django Admin.

Nesta etapa, veremos novas configurações para manipular melhor nossa receitas, como a implementação de um buscador por palavras.

Indo à classe ListandoReceitas() no arquivo admin.py, começamos incluindo search_fields sendo igual ao campo que queremos buscar, como 'nome_receita' por exemplo e salvamos o arquivo.

De volta à página de Admin do Django, atualizamos e um erro aparece. Voltamos ao terminal do Visual Studio para receber uma mensagem de erro dizendo que o valor search_fields precisa ser uma lista ou uma tupla, e passamos um valor específico. Então, adicionamos uma vírgula após 'nome_receita' para o erro não ser exibido novamente.

Atualizando a aplicação, vemos um campo de busca no topo da lista de receitas na Administração. Podemos testar escrevendo "sorvete" por exemplo para encontrarmos apenas a receita com essa palavra, ou partes desta palavra.

Para manipularmos melhor nossas receitas, podemos exibir um filtro por categoria através da propriedade list_filter sendo igual a ('categoria',), sem esquecer a vírgula para evitar o problema já visto.

De volta à aplicação, aparece um novo espaço com o filtro por categoria de acordo com o que estabelecemos, lembrando de manter a grafia correta.

Criamos mais uma receita de "Pudim" para incluir na categoria de "sobremesa", a mesma do sorvete. Preenchemos os campos com um texto qualquer somente para conseguirmos visualizar e testar o funcionamento das buscas e do filtro.

Pensando no crescimento de nosso projeto com cada vez mais itens, nossa lista pode ficar gigantesca e pouco prática. Para melhorar essa questão, criamos uma paginação para a lista de forma bastante simples através da propriedade list_per_page que pode receber um número específico de receitas por página. Como ainda temos poucos elementos, fazemos igual a 2.

from django.contrib import admin
from .models import Receita

class ListandoReceitas(admin.ModelAdmin):
    list_display = ('id', 'nome_receita', 'categoria', 'tempo_preparo')
    list_display_links = ('id', 'nome_receita')
    search_fields = ('nome_receita',)
    list_filter = ('categoria',)
    list_per_page = 2

admin.site.register(Receita, ListandoReceitas)

Voltamos ao Admin do Django e percebemos as páginas exibidas com o número de itens que estabelecemos. Podemos adicionar ainda mais receitas para testarmos essa nova configuração. Desta forma, podemos buscar receitas e organizá-las em páginas de forma mais agradável.

Sobre o curso Integração de modelos no Django: Filtros, buscas e admin

O curso Integração de modelos no Django: Filtros, buscas e admin possui 99 minutos de vídeos, em um total de 32 atividades. Gostou? Conheça nossos outros cursos de Python em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Python acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas