From 9e19a656096bf2a8595fde63a2c680988662ace4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Tue, 28 Jun 2022 11:05:32 +0800 Subject: [PATCH] =?UTF-8?q?rpj=E5=88=9B=E5=BB=BA=E6=97=B6=E5=88=9B?= =?UTF-8?q?=E5=BB=BAfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/rpm/serializers.py | 4 +++- apps/rpm/views.py | 13 +++++++++++-- apps/third/models.py | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) 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,