forked from erp-dev/erp
fix: plate_date_from and plate_date_to query fixed range for plate_order query api
This commit is contained in:
@@ -77,12 +77,23 @@ class PrintingOrderFilterSet(django_filters.FilterSet):
|
||||
outgoing_date_from = django_filters.DateFilter(field_name='outgoing_date', lookup_expr='gte')
|
||||
outgoing_date_to = django_filters.DateFilter(field_name='outgoing_date', lookup_expr='lte')
|
||||
created_date_from = django_filters.DateFilter(field_name='created_at', lookup_expr='gte')
|
||||
created_date_to = django_filters.DateFilter(field_name='created_at', lookup_expr='lte')
|
||||
created_date_to = django_filters.DateFilter(field_name='created_at', method='filter_created_date_to')
|
||||
|
||||
class Meta:
|
||||
model = models.PrintingOrder
|
||||
fields = ['customer', 'is_urgent', 'is_fabric_received', 'is_invalid']
|
||||
|
||||
def filter_created_date_to(self, queryset, name, value):
|
||||
"""
|
||||
过滤 created_at <= 指定日期的 23:59:59.999999
|
||||
使用 lt 次日 00:00:00 实现,确保包含整天
|
||||
"""
|
||||
if value:
|
||||
from datetime import timedelta
|
||||
next_day = value + timedelta(days=1)
|
||||
return queryset.filter(created_at__lt=next_day)
|
||||
return queryset
|
||||
|
||||
|
||||
@method_decorator(cache_page(20), name='list')
|
||||
class PrintingOrderViewSet(LimitedModelViewSet):
|
||||
@@ -552,16 +563,38 @@ class PlateOrderFilterSet(django_filters.FilterSet):
|
||||
fabric = django_filters.CharFilter(lookup_expr='icontains')
|
||||
style_name = django_filters.CharFilter(lookup_expr='icontains')
|
||||
plate_date_from = django_filters.DateFilter(field_name='plate_date', lookup_expr='gte')
|
||||
plate_date_to = django_filters.DateFilter(field_name='plate_date', lookup_expr='lte')
|
||||
plate_date_to = django_filters.DateFilter(field_name='plate_date', method='filter_plate_date_to')
|
||||
required_completion_date_from = IsoDateTimeFilter(field_name='required_completion_date', lookup_expr='gte')
|
||||
required_completion_date_to = IsoDateTimeFilter(field_name='required_completion_date', lookup_expr='lte')
|
||||
created_date_from = django_filters.DateFilter(field_name='created_at', lookup_expr='gte')
|
||||
created_date_to = django_filters.DateFilter(field_name='created_at', lookup_expr='lte')
|
||||
created_date_to = django_filters.DateFilter(field_name='created_at', method='filter_created_date_to')
|
||||
|
||||
class Meta:
|
||||
model = models.PlateOrder
|
||||
fields = ['customer', 'salesperson', 'merchandiser', 'urgency_level', 'is_invalid', 'is_ordered']
|
||||
|
||||
def filter_plate_date_to(self, queryset, name, value):
|
||||
"""
|
||||
过滤 plate_date <= 指定日期的 23:59:59.999999
|
||||
使用 lt 次日 00:00:00 实现,确保包含整天
|
||||
"""
|
||||
if value:
|
||||
from datetime import timedelta
|
||||
next_day = value + timedelta(days=1)
|
||||
return queryset.filter(plate_date__lt=next_day)
|
||||
return queryset
|
||||
|
||||
def filter_created_date_to(self, queryset, name, value):
|
||||
"""
|
||||
过滤 created_at <= 指定日期的 23:59:59.999999
|
||||
使用 lt 次日 00:00:00 实现,确保包含整天
|
||||
"""
|
||||
if value:
|
||||
from datetime import timedelta
|
||||
next_day = value + timedelta(days=1)
|
||||
return queryset.filter(created_at__lt=next_day)
|
||||
return queryset
|
||||
|
||||
|
||||
def _plate_order_last_modified(request, *args, **kwargs):
|
||||
"""
|
||||
|
||||
@@ -11,12 +11,12 @@ class LimitedLimitOffsetPagination(LimitOffsetPagination):
|
||||
"""
|
||||
带最大限制的 LimitOffsetPagination
|
||||
|
||||
- 默认每页返回 100 条
|
||||
- 最大每页返回 100 条
|
||||
- 默认每页返回 500 条
|
||||
- 最大每页返回 500 条
|
||||
- 防止前端请求过多数据
|
||||
"""
|
||||
default_limit = 300
|
||||
max_limit = 300
|
||||
default_limit = 500
|
||||
max_limit = 500
|
||||
|
||||
|
||||
class LimitedModelViewSet(viewsets.ModelViewSet):
|
||||
|
||||
Reference in New Issue
Block a user