rpj创建时创建file

This commit is contained in:
曹前明 2022-06-28 11:05:32 +08:00
parent a9a36ffd88
commit 9e19a65609
3 changed files with 15 additions and 4 deletions

View File

@ -5,7 +5,7 @@ from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertifica
from apps.system.models import Dept from apps.system.models import Dept
from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.constants import EXCLUDE_FIELDS
from apps.utils.serializers import CustomModelSerializer 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 import serializers
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from django.db import transaction from django.db import transaction
@ -200,6 +200,8 @@ class RpjmemberSerializer(CustomModelSerializer):
class RpjfileSerializer(CustomModelSerializer): class RpjfileSerializer(CustomModelSerializer):
file_cate_ = DictSimpleSerializer(source='file_cate', read_only=True)
files_ = FileSerializer(source='files', read_only=True)
class Meta: class Meta:
model = Rpjfile model = Rpjfile
fields = '__all__' fields = '__all__'

View File

@ -3,7 +3,7 @@ from apps.hrm.models import Certificate, Employee
from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj 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.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 apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin
from apps.utils.mixins import CustomDestoryModelMixin from apps.utils.mixins import CustomDestoryModelMixin
@ -129,7 +129,11 @@ class RpjViewSet(CustomModelViewSet):
raise ParseError('请指定相关方') raise ParseError('请指定相关方')
if not vdata.get('belong_dept', None): if not vdata.get('belong_dept', None):
vdata['belong_dept'] = vdata['rparty'].belong_dept 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): def update(self, request, *args, **kwargs):
obj = self.get_object() obj = self.get_object()
@ -150,6 +154,8 @@ class RpjmemberViewSet(CustomModelViewSet):
create_serializer_class = RpjmemberCreateSerializer create_serializer_class = RpjmemberCreateSerializer
update_serializer_class = RpjmemberUpdateSerializer update_serializer_class = RpjmemberUpdateSerializer
serializer_class = RpjmemberSerializer serializer_class = RpjmemberSerializer
select_related_fields = ['rpj']
filterset_fields = ['rpj']
def destroy(self, request, *args, **kwargs): def destroy(self, request, *args, **kwargs):
obj = self.get_object() obj = self.get_object()
@ -163,6 +169,9 @@ class RpjfileViewSet(UpdateModelMixin, DestroyModelMixin, ListModelMixin, Custom
queryset = Rpjfile.objects.all() queryset = Rpjfile.objects.all()
update_serializer_class = RpjfileUpdateSerializer update_serializer_class = RpjfileUpdateSerializer
serializer_class = RpjfileSerializer serializer_class = RpjfileSerializer
select_related_fields = ['rpj']
prefetch_related_fields = ['files']
filterset_fields = ['rpj']
def update(self, request, *args, **kwargs): def update(self, request, *args, **kwargs):
obj = self.get_object() obj = self.get_object()

View File

@ -32,7 +32,7 @@ class TDevice(BaseModel):
(DEVICE_PANEL, '面板机') (DEVICE_PANEL, '面板机')
) )
type = models.PositiveSmallIntegerField('设备类型', choices=DEVICE_CHOICE) 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, location = models.JSONField('位置信息', default=dict,
null=False, blank=True) null=False, blank=True)
area = models.ForeignKey(Area, on_delete=models.CASCADE, area = models.ForeignKey(Area, on_delete=models.CASCADE,