diff --git a/api_v1/views/printing/views.py b/api_v1/views/printing/views.py index c6af7d4..7763171 100644 --- a/api_v1/views/printing/views.py +++ b/api_v1/views/printing/views.py @@ -10,6 +10,7 @@ from rest_framework.parsers import MultiPartParser, FormParser, JSONParser from django.db.models import CharField, Prefetch from django.db.models.functions import Cast, Coalesce from django.views.decorators.cache import cache_page +from django.views.decorators.http import condition from django.utils.decorators import method_decorator from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as django_filters @@ -556,7 +557,16 @@ class PlateOrderFilterSet(django_filters.FilterSet): fields = ['customer', 'salesperson', 'merchandiser', 'urgency_level', 'is_invalid', 'is_ordered'] -@method_decorator(cache_page(20), name='list') +def _plate_order_last_modified(request, *args, **kwargs): + """ + 返回 PlateOrder 表中最新的 updated_at 时间。 + 用于条件请求(304 Not Modified)判断。 + """ + latest = models.PlateOrder.objects.order_by('-updated_at').values_list('updated_at', flat=True).first() + return latest + + +@method_decorator(condition(last_modified_func=_plate_order_last_modified), name='list') class PlateOrderViewSet(LimitedModelViewSet): """ 开版订单 ViewSet