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á!
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.
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.
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:
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.
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.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.
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.
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.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas