From c3afc248abeb1e65ccfbfa8f2f44c682bfb2c074 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 18 Oct 2023 16:29:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0sam=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sam/filters.py | 13 +++++++++++++ apps/sam/serializers.py | 5 +++++ apps/sam/views.py | 10 ++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 apps/sam/filters.py diff --git a/apps/sam/filters.py b/apps/sam/filters.py new file mode 100644 index 00000000..263e958d --- /dev/null +++ b/apps/sam/filters.py @@ -0,0 +1,13 @@ +from django_filters import rest_framework as filters +from apps.sam.models import OrderItem + + +class OrderItemFilter(filters.FilterSet): + + class Meta: + model = OrderItem + fields = { + "order": ["exact", "in"], + "order__state": ["exact", "in"], + "mtask": ["exact", "isnull"] + } diff --git a/apps/sam/serializers.py b/apps/sam/serializers.py index 1830ec4c..08d8143a 100644 --- a/apps/sam/serializers.py +++ b/apps/sam/serializers.py @@ -14,6 +14,11 @@ class CustomerSerializer(CustomModelSerializer): class ContractSerializer(CustomModelSerializer): + customer_name = serializers.CharField( + source='customer.name', read_only=True) + create_by_name = serializers.CharField( + source='create_by.name', read_only=True) + class Meta: model = Contract fields = '__all__' diff --git a/apps/sam/views.py b/apps/sam/views.py index 8eff10b1..e10abdc9 100644 --- a/apps/sam/views.py +++ b/apps/sam/views.py @@ -11,6 +11,7 @@ from rest_framework import serializers from rest_framework.exceptions import PermissionDenied from django.utils import timezone from rest_framework.response import Response +from .filters import OrderItemFilter # Create your views here. @@ -38,7 +39,7 @@ class ContractViewSet(CustomModelViewSet): """ queryset = Contract.objects.all() serializer_class = ContractSerializer - select_related_fields = ['customer'] + select_related_fields = ['customer', 'create_by'] search_fields = ['name', 'number'] filterset_fields = ['customer'] @@ -88,5 +89,10 @@ class OrderItemViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, Cust queryset = OrderItem.objects.all() serializer_class = OrderItemSerializer select_related_fields = ['order', 'material'] - filterset_fields = ['order', 'material', 'mtask'] + filterset_class = OrderItemFilter ordering = ['create_time'] + + def perform_destroy(self, instance): + if instance.order.state != Order.ORDER_CREATE: + raise ParseError('该订单状态下不可删除') + return super().perform_destroy(instance)