Django - Сшивание 2 атрибутов в сериализаторе

Ниже приведен сериализатор. Как вы можете видеть, он возвращает отдельные списки, которые соответствуют друг другу: image_url и image_uuid connect и video_url и video_uuid connect. Я бы хотел, чтобы этот сериализатор возвращал эти атрибуты, собранные вместе, так что он возвращает, например, response.data['image'] как список dict [{image_url: some url, image_uuid: some uuid}]. Как я могу это сделать?

serializer.py

class FullPostDataSerializer(serializers.ModelSerializer):
    image_url = serializers.SlugRelatedField(
        source='photo_set', many=True, read_only=True, slug_field='image_url'
    )
    image_uuid = serializers.SlugRelatedField(
        source='photo_set', many=True, read_only=True, slug_field='uuid'
    )
    video_url = serializers.SlugRelatedField(
        source='video_set', many=True, read_only=True, slug_field='video_url'
    )
    video_uuid = serializers.SlugRelatedField(
        source='video_set', many=True, read_only=True, slug_field='uuid'
    )
    goal_uuid = serializers.SlugField()
    creator_username = serializers.SlugField()
    reply_count = serializers.IntegerField()
    cheer_count = serializers.IntegerField()
    goal_description = serializers.SlugField()

    class Meta:
        model = Post
        fields = (
            'body', 'join_goal', 'created', 'creator_username', 'goal_description', 'reply_count', 'cheer_count',
            'image_url', 'uuid', 'type', 'image_uuid', 'creator', 'video_url', 'video_uuid', 'goal_uuid'
        )

helper.py

def full_post_data_serializer(post_query_set: QuerySet):
    """
    Returns post information in news feed form to include:
    creator username, goal description, reply count, cheer count, photos
    and video
    Parameters:
        post_query_set: Current Post model object query set
    Returns:
        serializer containing all data in query set serialized
        for news feed
    """
    query_set_annotated = post_query_set.annotate(
        creator_username=F('creator__username'),
        goal_description=F('join_goal__goal__description'),
        goal_uuid=F('join_goal__goal__uuid'),
        reply_count=Count('replypost', distinct=True),
        cheer_count=Count('cheerpost', distinct=True)
    ).prefetch_related(
        Prefetch('photo_set', Photo.objects.order_by('-created'))
    )
    return FullPostDataSerializer(query_set_annotated, many=True)
class FullPostDataSerializer(serializers.ModelSerializer):
    images = PhotoSerializer(source='photo_set', many=True, read_only=True)
    videos = VideoSerializer(source='video_set', many=True, read_only=True)
    goal_uuid = serializers.SlugField()
    creator_username = serializers.SlugField()
    reply_count = serializers.IntegerField()
    cheer_count = serializers.IntegerField()
    goal_description = serializers.SlugField()

    class Meta:
        model = Post
        fields = (
            'body', 'join_goal', 'created', 'creator_username', 'goal_description', 'reply_count', 'cheer_count',
            'images', 'uuid', 'type', 'creator', 'videos', 'goal_uuid'
        )
Вернуться на верх