Files
com2care_website/apps/products/views.py
T
2026-04-27 17:30:08 +03:30

54 lines
1.6 KiB
Python

from django.shortcuts import get_object_or_404
from django.views.generic import DetailView, ListView, TemplateView
from .models import MainProduct, SubProduct
class ProductOverviewView(ListView):
model = MainProduct
template_name = "products/overview.html"
context_object_name = "main_products"
queryset = MainProduct.objects.filter(is_active=True).prefetch_related(
"sub_products"
)
class MainProductDetailView(DetailView):
model = MainProduct
template_name = "products/main_detail.html"
context_object_name = "main_product"
slug_url_kwarg = "main_slug"
queryset = MainProduct.objects.filter(is_active=True).prefetch_related(
"sub_products"
)
class SubProductDetailView(TemplateView):
template_name = "products/sub_detail.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
main_product = get_object_or_404(
MainProduct,
slug=self.kwargs["main_slug"],
is_active=True,
)
sub_product = get_object_or_404(
SubProduct,
slug=self.kwargs["sub_slug"],
main_product=main_product,
is_active=True,
)
context["main_product"] = main_product
context["sub_product"] = sub_product
context["articles"] = sub_product.articles.prefetch_related("sections").all()
context["siblings"] = (
SubProduct.objects.filter(
main_product=main_product,
is_active=True,
)
.exclude(pk=sub_product.pk)
.order_by("order", "name")
)
return context