rparty返回admin, dept

This commit is contained in:
曹前明 2022-06-27 16:29:06 +08:00
parent 2b04df341d
commit 97b657f4b4
2 changed files with 22 additions and 8 deletions

View File

@ -37,6 +37,9 @@ class RpartyCreateUpdateSerializer(CustomModelSerializer):
class RpartySerializer(CustomModelSerializer): class RpartySerializer(CustomModelSerializer):
admin_username = serializers.CharField(source='admin.username', read_only=True)
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
class Meta: class Meta:
model = Rparty model = Rparty
fields = '__all__' fields = '__all__'
@ -138,9 +141,14 @@ class RpjmemberCreateSerializer(CustomModelSerializer):
with transaction.atomic(): with transaction.atomic():
ins = super().create(validated_data) ins = super().create(validated_data)
for x in rcertificates: for x in rcertificates:
rpjc, _ = Rpjcertificate.objects.get_or_create(rpj_member=ins, rcertificate=x, rpjc = Rpjcertificate.objects.filter(rpj_member=ins, rcertificate=x).first()
defaults={'rpj_member': ins, 'rcertificate': x}) if rpjc:
for f in Rcertificate._meta.fields: pass
else:
rpjc = Rpjcertificate()
rpjc.rpj_member = ins
rpjc.rcertificate = x
for f in Rpjcertificate._meta.fields:
if f.name not in ['id']: if f.name not in ['id']:
setattr(rpjc, f.name, getattr(x, f.name, None)) setattr(rpjc, f.name, getattr(x, f.name, None))
rpjc.save() rpjc.save()
@ -162,15 +170,20 @@ class RpjmemberUpdateSerializer(CustomModelSerializer):
raise ParseError('成员非创建状态不可修改') raise ParseError('成员非创建状态不可修改')
rcertificates = validated_data.pop('rcertificates') rcertificates = validated_data.pop('rcertificates')
with transaction.atomic(): with transaction.atomic():
instance = super().update(instance, validated_data) ins = super().update(instance, validated_data)
for x in rcertificates: for x in rcertificates:
rpjc, _ = Rpjcertificate.objects.get_or_create(rpj_member=instance, rcertificate=x, rpjc = Rpjcertificate.objects.filter(rpj_member=ins, rcertificate=x).first()
defaults={'rpj_member': instance, 'rcertificate': x}) if rpjc:
for f in Rcertificate._meta.fields: pass
else:
rpjc = Rpjcertificate()
rpjc.rpj_member = ins
rpjc.rcertificate = x
for f in Rpjcertificate._meta.fields:
if f.name not in ['id']: if f.name not in ['id']:
setattr(rpjc, f.name, getattr(x, f.name, None)) setattr(rpjc, f.name, getattr(x, f.name, None))
rpjc.save() rpjc.save()
return instance return ins
class RpjmemberSerializer(CustomModelSerializer): class RpjmemberSerializer(CustomModelSerializer):

View File

@ -21,6 +21,7 @@ class RpartyViewSet(CustomModelViewSet):
create_serializer_class = RpartyCreateUpdateSerializer create_serializer_class = RpartyCreateUpdateSerializer
update_serializer_class = RpartyCreateUpdateSerializer update_serializer_class = RpartyCreateUpdateSerializer
serializer_class = RpartySerializer serializer_class = RpartySerializer
select_related_fields = ['admin', 'belong_dept']
@action(methods=['post'], detail=True, perms_map={'post': 'rparty:assgin'}, serializer_class=RpartyAssignSerializer) @action(methods=['post'], detail=True, perms_map={'post': 'rparty:assgin'}, serializer_class=RpartyAssignSerializer)
@transaction.atomic @transaction.atomic