Skip to content

Instantly share code, notes, and snippets.

@walison17
Last active October 11, 2019 17:52
Show Gist options
  • Save walison17/827f1275e08f9b13f5e28ec7487a9a3b to your computer and use it in GitHub Desktop.
Save walison17/827f1275e08f9b13f5e28ec7487a9a3b to your computer and use it in GitHub Desktop.
import operator
from functools import reduce
@login_required
def busca(request):
config = {
're_avaliadoy': 're__icontains',
'nome_avaliadoy': 'icontains',
'hora_conclusao': 'exact',
're_avaliadoy__cdc': 'exact',
'nota': 'exact',
'medidas_de_desenvolvimento': 'icontains'
}
desempenho = Desempenho.objects.all()
fields = {
f: v for f, v in request.GET.items() if f in config and v not in (None, '')
}
if fields:
filters = (
Q(**dict([d]))
for d in {f'{f}__{config[f]}': v for f, v in fields.items()}.items()
)
desempenho = desempenho.filter(reduce(operator.or_, filters))
else:
messages.warning(request, 'Campos de busca vazios')
paginator = Paginator(desempenho, 15)
page = request.GET.get('p')
desempenho = paginator.get_page(page)
return render(request, 'desempenho/busca_desempenho.html', {
'desempenho': desempenho
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment