Django TemplateView не работает с этим кодом
У меня проблемы с написанием представлений для django oscar extended TemolateView
class CatalogueView(TemplateView):
"""
Browse all products in the catalogue
"""
context_object_name = "products"
template_name = 'oscar/catalogue/browse.html'
model = Product
def get(self, request, *args, **kwargs):
try:
self.search_handler = self.get_search_handler(
self.request.GET, request.get_full_path(), [])
response = super().get(request, *args, **kwargs)
except InvalidPage:
# Redirect to page one.
messages.error(request, _('The given page number was invalid.'))
return redirect('catalogue:index')
return response
def get_search_handler(self, *args, **kwargs):
return get_product_search_handler_class()(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super(CatalogueView, self).get_context_data(**kwargs)
ctx = {}
ctx['summary'] = _("All products")
ctx['pro_list'] = Product.objects.all()
ctx['pro_list1'] = Product.objects.all().filter().order_by('upc')
search_context = self.search_handler.get_search_context_data(
self.context_object_name)
ctx.update(search_context)
return ctx
Не обращайте внимания на беспорядочный формат отступов в коде. Django Oscar использует TemplateViews, основанные на классах, и я хочу написать больше кверсетов для моей модели продуктов, но все кажется не работает. get_context_data не работает. Мне нужен способ добавить больше кверсетов в TemplateView в представлении каталога. Как можно решить эту проблему? Мне нужно отфильтровать больше кверсетов для Product
django django-models django-views
Я не знаком с django, но я думаю, что вы можете попробовать:
def get_context_data(self, **kwargs):
context = super(CatalogueView, self).get_context_data(**kwargs)
context['summary'] = _("All products")
context['pro_list'] = Product.objects.all()
context['pro_list1'] = Product.objects.all().filter().order_by('upc')
search_context = self.search_handler.get_search_context_data(
self.context_object_name)
context.update(search_context)
return context
Уберите эту штуку с ctx.