Получение данных через 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},
...
],
}