fix: show product in replacement of sub products in homepage

This commit is contained in:
mohamad
2026-05-26 17:38:53 +03:30
parent cacf1ba77b
commit 52516d5a5a
17 changed files with 402 additions and 205 deletions
+21 -7
View File
@@ -1,11 +1,12 @@
import random
from django.db.models import Prefetch
from django.http import JsonResponse
from django.shortcuts import render
from django.views import View
from django.views.generic import DetailView, ListView, TemplateView
from apps.products.models import SubProduct
from apps.products.models import MainProduct, SubProduct
from .forms import ContactForm
from .models import (
@@ -18,6 +19,19 @@ from .models import (
)
def _homepage_products_catalog_queryset():
return (
MainProduct.objects.filter(is_active=True)
.prefetch_related(
Prefetch(
"sub_products",
queryset=SubProduct.objects.filter(is_active=True).order_by("order", "name"),
)
)
.order_by("order", "name")
)
class HomeView(TemplateView):
template_name = "pages/home.html"
@@ -29,11 +43,11 @@ class HomeView(TemplateView):
.prefetch_related("items")
.order_by("order")
)
ctx["sub_products"] = (
SubProduct.objects.filter(is_active=True, show_on_homepage=True)
.select_related("main_product")
ctx["homepage_products"] = (
MainProduct.objects.filter(is_active=True, show_on_homepage=True)
.order_by("homepage_order", "order")
)
ctx["homepage_products_catalog"] = _homepage_products_catalog_queryset()
return ctx
@@ -115,9 +129,9 @@ class CustomPageView(DetailView):
.prefetch_related("items")
.order_by("order")
)
ctx["sub_products"] = (
SubProduct.objects.filter(is_active=True, show_on_homepage=True)
.select_related("main_product")
ctx["homepage_products"] = (
MainProduct.objects.filter(is_active=True, show_on_homepage=True)
.order_by("homepage_order", "order")
)
ctx["homepage_products_catalog"] = _homepage_products_catalog_queryset()
return ctx