forked from erp-dev/erp
fix: business cancel service merged
This commit is contained in:
@@ -10,7 +10,7 @@ from rest_framework.permissions import BasePermission
|
||||
from rest_framework.permissions import DjangoModelPermissions
|
||||
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db.models import CharField, Prefetch
|
||||
from django.db.models import CharField, Exists, OuterRef, Prefetch
|
||||
from django.db.models.functions import Cast, Coalesce
|
||||
from django.views.decorators.cache import cache_page
|
||||
from django.views.decorators.http import condition
|
||||
@@ -486,7 +486,16 @@ class PrintingJobViewSet(CustomerVisibilityFilterMixin, LimitedModelViewSet):
|
||||
"""优化查询"""
|
||||
queryset = super().get_queryset()
|
||||
if self.action in ["list", "retrieve"]:
|
||||
from business.models import SalesOrderItem, SalesOrderStatusEnum
|
||||
|
||||
queryset = queryset.select_related("printing_order", "product")
|
||||
queryset = queryset.annotate(
|
||||
annotated_is_sales_order_bound=Exists(
|
||||
SalesOrderItem.objects.filter(
|
||||
printing_job_id=OuterRef("pk"),
|
||||
).exclude(sales_order__status=SalesOrderStatusEnum.CANCELLED)
|
||||
)
|
||||
)
|
||||
# 预取批量推进记录(避免 serializer 产生 N+1)
|
||||
queryset = queryset.prefetch_related(
|
||||
Prefetch(
|
||||
|
||||
Reference in New Issue
Block a user