Как объединить любые поля в одно в фильтрах Django - PullRequest
0 голосов
/ 26 сентября 2019

Интересно, как вы объединяете поиск из нескольких полей в одно.Поля будут textoQuestao, perguntaQuestao, aOpcao, bOpcao, cOpcao, eOpcao, eOpcao.

. Я бы хотел, чтобы все эти поля были объединены в одно, называемое texto , и выполнял поиск во всех выбранных полях.

filters.py

class FiltroQuestoes(django_filters.FilterSet):
    texto = 
    class Meta:
        model = Questao
        fields = ['textoQuestao','perguntaQuestao','aOpcao','bOpcao','cOpcao','dOpcao','eOpcao','idProva','idQuestao','idCategoria']

views.py

def FiltroDeQuestoesView(request):
    qs = filter(request)
    context = {
        'queryset': qs,
        'categorias': Categoria.objects.all(),
        'provas': Prova.objects.all()
    }
    return render(request, "polls/pesquisa.html", context)


def filter(request):
    qs = Questao.objects.all()
    categorias = Categoria.objects.all()
    prova = request.GET.get('prova')
    provas = Prova.objects.all()
    questao = request.GET.get('questao')
    categoria = request.GET.get('categoria')
    return qs

search.html

{% block content %}
  <form method="get">
    <div class="well">
      <h4 style="margin-top: 0">Filter</h4>
      <div class="row">
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.texto.label_tag }}
          {% render_field filter.form.texto class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.idProva.label_tag }}
          {% render_field filter.form.idProva class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.idQuestao.label_tag }}
          {% render_field filter.form.idQuestao class="form-control" %}
        </div>
        <div class="form-group col-sm-4 col-md-3">
          {{ filter.form.idCategoria.label_tag }}
          {% render_field filter.form.idCategoria class="form-control" %}
        </div>
      <button type="submit" class="btn btn-primary">
        <span class="glyphicon glyphicon-search"></span> Search
      </button>
    </div>
  </form>
{% endblock %}

1 Ответ

0 голосов
/ 26 сентября 2019

Я бы посоветовал вам использовать для этого эластичный поиск.

Но вы можете использовать объекты django Q , чтобы выполнить ИЛИ запрос

qs = Questao.objects.filter(Q(textoQuestao__icontains=query_string)| Q(perguntaQuestao__icontains=query_string)|...
...