@AlexandrBirukov

Как организовать форму поиска по разным моделям?

Есть две модели и форма поиска. В форме два поля: 1 - посковая фраза, 2 - селект по которому выбирается в какой моделе искать. Из формы гетом передаю эти поля в вьюху:
class ShortSearchView(AllPagesMixin, ListView):
    '''Результаты быстрого поиска'''

    context_object_name = 'result_list'
    template_name = 'main/search_list.html'
    paginate_by = 20

    def get_queryset(self):
        where = self.request.GET.get('where', '')
        word = self.request.GET.get('word', '')
        if where == '1':
            result = First.objects.filter(name__icontains=word)
        elif where == '2':
            result = Second.objects.filter(name__icontains=word)
        else:
            result = False

        return result


Все работает до того момента как появляется пагинация - object of type 'bool' has no len(), получается, что при переходе на следующую страницу get_queryset снова обрабатывает условия, но не получает get. Напишите пожалуйста, что не так делаю, а то мучают смутные сомнения, что вообще все не так надо было делать! Спасибо за ответы.
  • Вопрос задан
  • 190 просмотров
Решения вопроса 2
sim3x
@sim3x
В принципе, ListView сам должен заниматься пагинацией
Слова и параметры для поиска нужно самому вставлять в линки в разделе пагинации в темплейте

Учтите, что перед вставкой поискового слова в урл необходимо очистить фразу от тегов или, в более общем случае, от не_букв / не_цифр

Джанга сама постарается вас защитить от xss, но лучше перебдеть
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы