Опция поиска внутри категории - PullRequest
0 голосов
/ 16 апреля 2020

Django:

Я пытаюсь создать функцию, с помощью которой пользователь может щелкнуть категорию, а затем выполнить поиск в этой категории. Моя проблема в том, что я не могу получить категорию pk в html. Я исчерпал свой мозг, пытаясь найти способ, но пока не повезло.

  <form class="searchfield" action="{% url 'posts:cat_search' pk=  %}" method="get">
    <button  type="submit" name="button">
      <i class="fa fa-search"></i>
    </button>
    <input class="searchfield" id="searchbox" name='q' type="text" placeholder="Search">

  </form>

Мне нужно указать категорию pk для поиска, но как? Я могу захватить все категории ПК, но только не для правильной категории

class PostListView(LoginRequiredMixin, ListView):
    model = Post

    def categories(self):
        return Category.objects.all()

    def get_queryset(self):
        return Post.objects.filter(created_date__lte=timezone.now()).order_by('-created_date')


class PostCatView(PostListView):
    template_name = 'posts/post_category.html'
    def get_queryset(self):
        result_pk = self.kwargs.get('pk')
        return Post.objects.filter(label=self.kwargs.get('pk')).order_by('-created_date')




class CategorySearchView(PostCatView):

    def get_queryset(self):
        result = super(PostCatView, self).get_queryset()

        query = self.request.GET.get('q')
        if query:
            query_list = query.split()
            result = result.filter(
                reduce(operator.and_,
                        (Q(title__icontains=q) for q in query_list)) |
                reduce(operator.and_,
                        (Q(body__icontains=q) for q in query_list))
            )
        return result

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете добавить скрытый тип ввода в форме HTML и получить pk из запроса.

Примерно так:

<input type="hidden" name"pk" value="<your_category_id>" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...