O código ensinado na aula é o seguinte:
def buscar(request):
fotografias = Fotografia.objects.order_by('data_fotografia').filter(publicada=True)
if 'buscar' in request.GET:
nome_a_buscar = request.GET['buscar']
if nome_a_buscar:
fotografias = fotografias.filter(nome__icontains=nome_a_buscar)
return render(request, 'galeria/buscar.html', {'cards': fotografias})
Como alternativa, escrevi o seguinte:
def buscar(request):
fotografias = []
if 'buscar' in request.GET:
nome_a_buscar = request.GET['buscar']
if nome_a_buscar:
fotografias = Fotografia.objects.order_by('data_fotografia').filter(publicada=True).filter(nome__icontains=nome_a_buscar)
return render(request, 'galeria/buscar.html', {'cards': fotografias})
Existe alguma diferença de desempenho entre eles? A mim, parece que buscar as fotografias no banco de dados já com o filtro da busca é mais eficiente do que buscar todas as fotografias e depois filtrar. O que vocês acham?