diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index af294917..12e332e6 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -5,7 +5,7 @@ from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertifica from apps.system.models import Dept from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.serializers import CustomModelSerializer -from apps.system.serializers import DictSerializer, FileSerializer +from apps.system.serializers import DictSerializer, DictSimpleSerializer, FileSerializer from rest_framework import serializers from rest_framework.exceptions import ParseError from django.db import transaction @@ -200,6 +200,8 @@ class RpjmemberSerializer(CustomModelSerializer): class RpjfileSerializer(CustomModelSerializer): + file_cate_ = DictSimpleSerializer(source='file_cate', read_only=True) + files_ = FileSerializer(source='files', read_only=True) class Meta: model = Rpjfile fields = '__all__' diff --git a/apps/rpm/views.py b/apps/rpm/views.py index fec86216..958770c7 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -3,7 +3,7 @@ from apps.hrm.models import Certificate, Employee from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RfileListSerializer, RpartySerializer, RpjListSerializer, RpjfileSerializer, RpjfileUpdateSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer -from apps.system.models import Post, User, UserPost +from apps.system.models import Dictionary, Post, User, UserPost from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin from apps.utils.mixins import CustomDestoryModelMixin @@ -129,7 +129,11 @@ class RpjViewSet(CustomModelViewSet): raise ParseError('请指定相关方') if not vdata.get('belong_dept', None): vdata['belong_dept'] = vdata['rparty'].belong_dept - return super().create(request, *args, **kwargs) + ins = super().create(request, *args, **kwargs) + # 同步创建需要提交的资料 + for i in Dictionary.objects.filter(type__code='rparty_file').order_by('sort'): + Rpjfile.objects.create(rpj=ins, file_cate=i) + return ins def update(self, request, *args, **kwargs): obj = self.get_object() @@ -150,6 +154,8 @@ class RpjmemberViewSet(CustomModelViewSet): create_serializer_class = RpjmemberCreateSerializer update_serializer_class = RpjmemberUpdateSerializer serializer_class = RpjmemberSerializer + select_related_fields = ['rpj'] + filterset_fields = ['rpj'] def destroy(self, request, *args, **kwargs): obj = self.get_object() @@ -163,6 +169,9 @@ class RpjfileViewSet(UpdateModelMixin, DestroyModelMixin, ListModelMixin, Custom queryset = Rpjfile.objects.all() update_serializer_class = RpjfileUpdateSerializer serializer_class = RpjfileSerializer + select_related_fields = ['rpj'] + prefetch_related_fields = ['files'] + filterset_fields = ['rpj'] def update(self, request, *args, **kwargs): obj = self.get_object() diff --git a/apps/third/models.py b/apps/third/models.py index 2e744ca4..da70a4a6 100755 --- a/apps/third/models.py +++ b/apps/third/models.py @@ -32,7 +32,7 @@ class TDevice(BaseModel): (DEVICE_PANEL, '面板机') ) type = models.PositiveSmallIntegerField('设备类型', choices=DEVICE_CHOICE) - code = models.CharField('设备唯一标识', max_length=20) + code = models.CharField('设备唯一标识', max_length=20, db_index=True) location = models.JSONField('位置信息', default=dict, null=False, blank=True) area = models.ForeignKey(Area, on_delete=models.CASCADE,