Boa noite, gostaria de saber, como em django, eu posso criar uma filtragem refinada, numa lista de itens exibidos ao usuario, seria algo como ( filtro 1 aplicado, retorna resultado, ai aplica filtro2, e retorna o resultado dentro dos elementos retornados nop filtro 1, por exemplo de uma lista de cadastros, entre homens e mulheres, casados e solteiros com e sem filhos,, selecionar somente os homens e casados e sem filhos,) acho que deu para entender segue abaixo a minha view para listar e o template que renderiza essa pagina `class listarprocessos(ListView): model = models.Processo template_name = 'processos/processo.html' context_object_name = 'processos' paginate_by = 10 #combinar as duas formas de busca, uma para busca, e outra para ordenaçao def get_queryset(self): #aqui para a search queryset = models.Processo.objects.filter(show=True).order_by('-id') search_query = self.request.GET.get('q', '') if search_query: queryset = queryset.filter( Q(numero_processo__icontains=search_query) | Q(numero_licitacao__icontains=search_query) | Q(contratante__icontains=search_query) | Q(modalidade__icontains=search_query) ).order_by('-id') # ordena do maior para o menor, atençao quando lançar a logica no template, o eroo # era Seu template usava -data_disputa, mas o backend esperava data_disputa_asc. sort_param = self.request.GET.get('sort', '')# self.request captura as informaçoes do template if sort_param =='data_disputa': queryset = queryset.order_by('-data_disputa') elif sort_param =='data_disputa_asc': queryset = queryset.order_by('data_disputa') #filtro por categoria do models modalidade=self.request.GET.get('modalidade', '') status = self.request.GET.get('status', '') tipo=self.request.GET.get('tipo', '') # para consultas dinamicas ,e refinadas somente if if modalidade: queryset = queryset.filter(modalidade=modalidade) if status: queryset = queryset.filter(status=status) if tipo: queryset = queryset.filter(tipo=tipo) # else: # return redirect('processosrocesso') return queryset tem que fazer os 2 context, e get query set def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # Obter as modalidades disponíveis dinamicamente context['modalidades'] = models.Processo.objects.values_list('modalidade', flat=True).distinct() context['situacao'] = models.Processo.objects.values_list('status', flat=True).distinct() context['tipos'] = models.Processo.objects.values_list('tipo', flat=True).distinct() return context template abaixo {% extends "global/base.html" %} {% block content_processos %} {% load alfilters %} {% block searchprocesso %} <form action="{% url 'processosrocesso' %}" method="get"> <input type="text" class="search-input" placeholder="SEARCH" name="q" id="search" value="{{ request.GET.q }}" style="background: slategray" > </form> {% endblock %} COMERCIAL PROCESSOS Id do Processo Nº Processo Nº licitação Contratante Modalidade <option value="" {% if not request.GET.modalidade %}selected{% endif %}> SELECIONE </option> {% for modalidade in modalidades %} <option value="{{ modalidade }}" {% if request.GET.modalidade == modalidade %}selected {% endif %}> {{modalidade}} </option> {% endfor %} </select> </form> </th> <th class="table-header" style="text-align: center"> <a href="?q={{ request.GET.q }}&sort={% if request.GET.sort == 'data_disputa' %}data_disputa_asc{% elif request.GET.sort == 'data_disputa_asc' %}data_disputa{% else %}data_disputa{% endif %}"> Data da Seção {% if request.GET.sort == 'data_disputa' %} <span>▲</span> <!-- Ícone de ordenação crescente --> {% elif request.GET.sort == 'data_disputa_asc' %} <span>▼</span> <!-- Ícone de ordenação decrescente --> {% else %} <span>△</span> <!-- Ícone neutro quando sem ordenação --> {% endif %} </a> </th> <th class="table-header" style="text-align: center"> TIPO <form action="{% url 'processosrocesso' %}" method="get" > <select name="tipo" onchange="this.form.submit()" id=""> <option value="" {% if not request.GET.tipo %}selected{% endif %}> SELECIONE </option> {% for tipo in tipos %} <option value="{{ tipo}}" {% if request.GET.tipo == tipo %}selected{% endif %}> {{tipo}} </option> {% endfor %} </select> </form> </th> <th class="table-header" style="text-align: center">Valor total</th> <th class="table-header" style="text-align: center"> status <form action="{% url 'processosrocesso' %}" method="get" > <select name="status" onchange="this.form.submit()" id=""> <option value="" {% if not request.GET.status %}selected{% endif %}> SELECIONE </option> {% for status in situacao %} <option value="{{ status}}" {% if request.GET.status == status %}selected{% endif %}> {{status}} </option> {% endfor %} </select> </form> </th> </tr> </thead> <tbody> </tbody> {% for processo in processos %} <tr class="table-row"> <td class="table-cel" style="text-align: center"> <a href="{% url 'processos:detalhe' processo.pk %}"> {{ processo.pk }} </a> </td> <td class="table-cel" style="text-align: center">{{processo.numero_processo}}</td> <td class="table-cel" style="text-align: center">{{processo.numero_licitacao}}</td> <td class="table-cel" style="text-align: center">{{processo.contratante}}</td> <td class="table-cel" style="text-align: center">{{processo.modalidade}}</td> <td class="table-cel" style="text-align: center">{{processo.data_disputa}}</td> <td class="table-cel" style="text-align: center">{{processo.tipo}}</td> <td class="table-cel" style="text-align: center">{{processo.valor_total|formata_preco}}</td> <td class="table-cel" style="text-align: center">{{processo.status}}</td> </tr> {% endfor %} </table> <div> </div> {% endblock %} ` Continue reading...