forked from erp-dev/erp
fix: binding merchant and employee at admin site
This commit is contained in:
@@ -16,6 +16,9 @@ from printing.serializers import (
|
||||
PrintingOrderListSerializer,
|
||||
PrintingOrderDetailSerializer,
|
||||
PrintingOrderCreateUpdateSerializer,
|
||||
PrintingJobListSerializer,
|
||||
PrintingJobDetailSerializer,
|
||||
PrintingJobCreateUpdateSerializer,
|
||||
)
|
||||
|
||||
|
||||
@@ -225,3 +228,76 @@ class PrintingOrderViewSet(viewsets.ModelViewSet):
|
||||
'detail': '已标记布料已收',
|
||||
'data': serializer.data
|
||||
})
|
||||
|
||||
|
||||
class PrintingJobFilterSet(django_filters.FilterSet):
|
||||
"""印染款式明细过滤器"""
|
||||
printing_order = django_filters.NumberFilter()
|
||||
product = django_filters.NumberFilter()
|
||||
product_name = django_filters.CharFilter(field_name='product__name', lookup_expr='icontains')
|
||||
unit = django_filters.CharFilter(lookup_expr='icontains')
|
||||
quantity_min = django_filters.NumberFilter(field_name='quantity', lookup_expr='gte')
|
||||
quantity_max = django_filters.NumberFilter(field_name='quantity', lookup_expr='lte')
|
||||
pieces_min = django_filters.NumberFilter(field_name='pieces', lookup_expr='gte')
|
||||
pieces_max = django_filters.NumberFilter(field_name='pieces', lookup_expr='lte')
|
||||
|
||||
class Meta:
|
||||
model = models.PrintingJob
|
||||
fields = ['printing_order', 'product']
|
||||
|
||||
|
||||
class PrintingJobViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
印染款式明细 ViewSet
|
||||
|
||||
提供印染款式明细的增改查功能(不支持删除)
|
||||
|
||||
list: 获取款式明细列表
|
||||
retrieve: 获取款式明细详情
|
||||
create: 创建款式明细
|
||||
update: 更新款式明细
|
||||
partial_update: 部分更新款式明细
|
||||
|
||||
查询参数:
|
||||
- printing_order: 印染订单ID
|
||||
- product: 产品ID
|
||||
- product_name: 产品名称(模糊查询)
|
||||
- unit: 单位(模糊查询)
|
||||
- quantity_min: 最小数量
|
||||
- quantity_max: 最大数量
|
||||
- pieces_min: 最小件数
|
||||
- pieces_max: 最大件数
|
||||
- search: 全文搜索(产品名称、单位、尺寸、备注)
|
||||
- ordering: 排序字段
|
||||
"""
|
||||
queryset = models.PrintingJob.objects.all()
|
||||
permission_classes = [DjangoModelPermissions, IsPrintingFactory]
|
||||
pagination_class = LimitOffsetPagination
|
||||
filter_backends = [DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter]
|
||||
filterset_class = PrintingJobFilterSet
|
||||
search_fields = ['product__name', 'unit', 'size', 'description']
|
||||
ordering_fields = ['id', 'created_at', 'updated_at', 'quantity', 'pieces']
|
||||
ordering = ['-created_at']
|
||||
|
||||
def get_serializer_class(self):
|
||||
"""根据动作选择序列化器"""
|
||||
if self.action == 'list':
|
||||
return PrintingJobListSerializer
|
||||
elif self.action in ['create', 'update', 'partial_update']:
|
||||
return PrintingJobCreateUpdateSerializer
|
||||
else: # retrieve
|
||||
return PrintingJobDetailSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
"""优化查询"""
|
||||
queryset = super().get_queryset()
|
||||
if self.action in ['list', 'retrieve']:
|
||||
queryset = queryset.select_related('printing_order', 'product')
|
||||
return queryset
|
||||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
"""禁用删除操作"""
|
||||
return Response(
|
||||
{'detail': '印染款式明细不支持删除操作'},
|
||||
status=status.HTTP_405_METHOD_NOT_ALLOWED
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user