from .models import * from projects.models import * from rest_framework import serializers class NotificationSerializer(serializers.ModelSerializer): meta = serializers.SerializerMethodField() class Meta: model = Notification fields = ['id', 'content', 'note_type', 'is_read', 'meta'] def get_meta(self, obj): REL_SERIALIZER_MAP = { 'project_invitation' : ProjectInvitationMetaSerializer, } for rel_name, serializer_cls in REL_SERIALIZER_MAP.items(): rel_obj = getattr(obj, rel_name, None) if rel_obj is not None: return serializer_cls(rel_obj).data return None class ProjectInvitationMetaSerializer(serializers.ModelSerializer): project_invitation_id = serializers.CharField(source='id') project_title = serializers.CharField(source='project.title') from_user_nickname = serializers.CharField(source='from_user.nickname') class Meta: model = ProjectInvitation fields = ['project_invitation_id', 'project_title', 'from_user_nickname', 'status']