diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index b98cdd46..36a3273a 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -100,6 +100,7 @@ class RemployeeCreateSerializer(CustomModelSerializer): class RemployeeSerializer(CustomModelSerializer): + class Meta: model = Remployee fields = '__all__' @@ -194,10 +195,17 @@ class RpjmemberUpdateSerializer(CustomModelSerializer): class RpjmemberSerializer(CustomModelSerializer): + remployee_ = RemployeeSerializer(source='remployee', read_only=True) + rcertificates_ = serializers.SerializerMethodField() + class Meta: model = Rpjmember fields = '__all__' + def get_rcertificates_(self, obj): + cs = Rpjcertificate.objects.filter(rpj_member=obj) + return cs.values('certificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file') + class RpjfileSerializer(CustomModelSerializer): file_cate_ = DictSimpleSerializer(source='file_cate', read_only=True) diff --git a/apps/rpm/views.py b/apps/rpm/views.py index a55f5404..44650cc6 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -155,7 +155,8 @@ class RpjmemberViewSet(CustomModelViewSet): create_serializer_class = RpjmemberCreateSerializer update_serializer_class = RpjmemberUpdateSerializer serializer_class = RpjmemberSerializer - select_related_fields = ['rpj'] + select_related_fields = ['remployee'] + prefetch_related_fields = ['rcertificates'] filterset_fields = ['rpj'] def destroy(self, request, *args, **kwargs):