Acompanhando a aula e as sugestões do fórum, notei a dificuldade em realizar buscas também pela categoria (embora redundante com os filtros, acho que para a melhor experiência do usuário isso é um ponto a se considerar). No exemplo dado em aula o nome "Nebulosa" só é encontrado devido a existência de uma foto chamada "Nebulosa de Carina". Mas, caso suas fotos adicionadas sejam diferentes (e com nomes em inglês, como no meu caso), ao buscar por "nebula" a foto apareceria, pois é o nome da foto, mas buscando por "Nebulosa" ou "Planeta" a busca retornava que não foram encontradas imagens. Dessa forma, realizei uma pesquisa e cheguei à seguinte conclusão, editando a função buscar dentro de views.py:
#Código omitido
def buscar(request):
if not request.user.is_authenticated:
messages.error(request, 'Usuário não logado')
return redirect('login')
fotografias = Fotografia.objects.filter(publicada=True).order_by("data_fotografia")
nome_a_buscar = request.GET.get('buscar', '')
if nome_a_buscar:
# Filtrando por nome, legenda, descrição e categoria
fotografias = fotografias.filter(
Q(nome__icontains=nome_a_buscar) |
Q(legenda__icontains=nome_a_buscar) |
Q(descricao__icontains=nome_a_buscar) |
Q(categoria__icontains=nome_a_buscar) # Agora inclui a categoria
)
if not fotografias.exists():
messages.info(request, 'Nenhuma fotografia encontrada com esse termo.')
return render(request, "galeria/index.html", {"cards": fotografias})
#Código omitido