python – 在Django中截断模型序列化程序的长度,其中有多个= True

所以在我的项目中,我有一个模型聊天很多消息.我希望ChatSerializer里面有MessageSerializer,很多= True.

但是,我只想包含最后50个Message模型.

class MessageSerializer(serializers.ModelSerializer):
    class Meta(object):
        model = Message
        fields = '__all__'

class ChatSerializer(serializers.ModelSerializer):
    messages = MessageSerializer(many=True)
    class Meta:
        model = Chat
        fields = '__all__'

有什么我可以添加到messages = MessageSerializer(many = True),使它只返回最新的50条消息?

谢谢!

最佳答案 您可以使用
SerializerMethodField来做到这一点.

MESSAGE_COUNT = 50 class ChatSerializer(serializers.ModelSerializer): messages = serializers.SerializerMethodField() class Meta: model = Chat fields = '__all__' def get_messages(self, obj): return MessageSerializer(obj.messages[:MESSAGE_COUNT ], many=True).data 
点赞