forked from erp-dev/erp
fix: added name filter for api_man apis, fixed plate_orders search exclude id (only search via design_code)
This commit is contained in:
@@ -8,6 +8,8 @@ from rest_framework.permissions import BasePermission
|
||||
from rest_framework.pagination import LimitOffsetPagination
|
||||
from rest_framework.permissions import DjangoModelPermissions
|
||||
from rest_framework.parsers import MultiPartParser, FormParser, JSONParser
|
||||
from django.db.models import CharField
|
||||
from django.db.models.functions import Cast, Coalesce
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django_filters import rest_framework as django_filters
|
||||
from django_filters import IsoDateTimeFilter
|
||||
@@ -590,7 +592,8 @@ class PlateOrderViewSet(viewsets.ModelViewSet):
|
||||
pagination_class = LimitOffsetPagination
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
|
||||
filterset_class = PlateOrderFilterSet
|
||||
search_fields = ['design_code', 'style_name', 'customer__name', 'fabric']
|
||||
# design_code_normalized: 当 design_code 为空时用 id 兜底,便于搜索数字编号
|
||||
search_fields = ['design_code', 'design_code_normalized', 'style_name', 'customer__name', 'fabric']
|
||||
ordering_fields = [
|
||||
'id', 'created_at', 'updated_at', 'plate_date',
|
||||
'required_completion_date', 'completion_date',
|
||||
@@ -618,6 +621,10 @@ class PlateOrderViewSet(viewsets.ModelViewSet):
|
||||
queryset = super().get_queryset()
|
||||
if self.action in ['list', 'retrieve']:
|
||||
queryset = queryset.select_related('customer', 'salesperson', 'merchandiser', 'business_object')
|
||||
# 为搜索提供 design_code 的兜底(为空时使用主键字符串)
|
||||
queryset = queryset.annotate(
|
||||
design_code_normalized=Coalesce('design_code', Cast('id', output_field=CharField()))
|
||||
)
|
||||
return queryset
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user