Передача дополнительного контекста в ListViews в Django

Может ли кто-нибудь сказать мне, как я могу передать "query" моему ListView в качестве контекста и в то же время сохранить "search_results" как имя_объекта контекста? Я просто не могу разобраться в этом:

class SearchResulView(ListView):
    model = Product
    template_name = 'shop/product/search_results.html'
    context_object_name = 'search_results' 

    def get_queryset(self):
        query = self.request.GET.get("q")
        search_results = Product.objects.filter(
            Q(name__icontains=query)
            )
        return search_results

Я пытаюсь отобразить значения, переданные в "query" в моем шаблоне, но я просто не могу понять, как...

Вы можете передать это, переопределив метод .get_context_data(…) [Django-doc]:

class SearchResulView(ListView):
    model = Product
    template_name = 'shop/product/search_results.html'
    context_object_name = 'search_results' 

    def get_queryset(self):
        return super().get_queryset().filter(
            name__icontains=self.request.GET.get('q')
        )

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['query'] = self.request.GET.get('q')
        return context

Однако вам не нужно переопределять метод .get_context_data(…). В шаблоне вы можете получить доступ к нему с помощью:

{{ view.request.GET.q }}
Вернуться на верх