Получение данных через related_name в django rest framework

Имеются две модели:

class Post(models.Model):
    title = models.CharField(max_length=100)
    text = models.CharField(max_length=1000)


class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='post_comments')
    comment = models.CharField(max_length=512)

Как мне в сериализаторе получить Post, но при этом, чтобы я в вывод мог добавить туда еще и комментарии. Что-то типа так:

{
    "posts": [
        {
            "title ": "Post Title",
            "text": "Post Text",
            "comments": [
                {
                   "post": 1,
                   "comment": "Comment text"
                }
            ]
        }
    ]
}

Для этого вам нужно использовать вложенные сериализаторы. Пример из документации:

class TrackSerializer(serializers.ModelSerializer):
    class Meta:
        model = Track
        fields = ['order', 'title', 'duration']

class AlbumSerializer(serializers.ModelSerializer):
    tracks = TrackSerializer(many=True, read_only=True)

    class Meta:
        model = Album
        fields = ['album_name', 'artist', 'tracks']

Вывод будет выглядеть так:

{
    'album_name': 'The Grey Album',
    'artist': 'Danger Mouse',
    'tracks': [
        {'order': 1, 'title': 'Public Service Announcement', 'duration': 245},
        {'order': 2, 'title': 'What More Can I Say', 'duration': 264},
        {'order': 3, 'title': 'Encore', 'duration': 159},
        ...
    ],
}
Вернуться на верх