Мульти поиск DJANGO - PullRequest
       66

Мульти поиск DJANGO

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

Я только что закончил один урок, где пользователь может искать города, но можно ввести только один город.Если я хотел бы искать Осло, Будапешт в то же время это невозможно.Вы знаете, что я могу добавить, чтобы изменить его?

Просмотров:

from django.views.generic import TemplateView, ListView
from django.db.models import Q
from .models import City

class HomePageView(TemplateView):
    template_name='home.html'

class SearchResultsView(ListView):
    model = City
    template_name = 'search_results.html'

    def get_queryset(self):
        query = self.request.GET.get('q')
        object_list = City.objects.filter(
            Q(name__icontains=query) | Q(state__icontains=query)
        )
        return object_list

TEMPLATE:

<h1>Search Results</h1>

<ul>
  {% for city in object_list %}
    <li>
      {{ city.name }}, {{ city.state }}
    </li>
  {% endfor %}
</ul>

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Мы можем сделать что-то вроде этого:

def get_queryset(self):
    queries = self.request.GET.get('q')
    queries = queries.split(', ')        

    q = Q()
    for query in queries:
        q |= (Q(name__icontains=query) | Q(state__icontains=query))

    return City.objects.filter(q)
0 голосов
/ 29 сентября 2019

Вы можете фильтровать по нескольким именам, например так:

City.objects.filter(name__in=list_of_names)

, где list_of_names - это объект типа list например, list_of_names = ['name_1', 'name_2']

IЯ не уверен, как вы генерируете свой запрос, но вам нужно изменить его, чтобы позволить пользователю также вводить несколько городов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...