Django Rest Framework - Ограничение записей FK - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть 2 модели, пост и комментарии

class Post(models.Model):
    post_id = models.IntegerField(primary_key=True)
    ...

class Comment(models.Model):
    post = models.ForeignField(Post, on_delete=models.CASCADE, related_name='comment_post')
    ...

Я создал сериализатор для поста

class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = '__all___'

class PostSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True, source='comment_post')

    class Meta:
        model = Post
        fields = ('post_id', 'comments')

PostSerializer выдает все комментарии к конкретному посту.

Я хочу получить доступ к 5 последним комментариям к сообщению.(планируете использовать что-то вроде order_by ('- comment_time') [: 5])

Как я могу сделать это в Django Rest Framework в PostSerializer?

Спасибо!

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете использовать SerializerMethodField:

class PostSerializer(serializers.ModelSerializer):
    comments = serializers.SerializerMethodField()

    def get_comments(self, obj):
        # retrieve 5 comments
        return CommentSerializer(obj.comments.all()[:5], many=True).data 

    class Meta:
        model = Post
        fields = ('post_id', 'comments')
...