Всем привет, как ограничить количество результатов с помощью сериализатора?
Вкратце, есть таблица комментариев, которая может содержать разные типы постов.
class CourseComment(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
content = models.TextField()
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
и здесь связанная таблица
class CourseMessage(models.Model):
course_id = models.ForeignKey(Course, on_delete=models.PROTECT)
author_id = models.ForeignKey(User, on_delete=models.PROTECT)
text = models.TextField() # RAW Format must exclude specials chars before publish
is_pinned = models.BooleanField(default=False)
comments = GenericRelation('CourseComment')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Я сделал сериализатор согласно документации https://www.django-rest-framework.org/api-guide/relations/
class CourseMessages(serializers.ModelSerializer):
user = Author(source='authorid', read_only=True)
files = MessageFiles(source='coursemessageattachedfile_set', many=True)
message_comments = MessageComments(source='comments', many=True, read_only=True)
class Meta:
model = CourseMessage
fields = ['text', 'updated_at', 'user', 'files', 'message_comments']
class MessageComments(serializers.RelatedField):
def to_representation(self, value):
ct = ContentType.objects.get_for_model(value)
serializer = Comments(value, read_only=True, source='last_comments')
return serializer.data
class Comments(serializers.ModelSerializer):
author = Author(source='user', read_only=True)
class Meta:
model = CourseComment
fields = ['content', 'author']
Все работает хорошо, но я хотел бы увидеть первые 3 комментария. Может кто сталкивался с такой проблемой, или может посоветовать как лучше сделать. Я получаю эти данные для страницы сведений RetrieveAPIView. Первые три комментария обязательны для отображения на лицевой стороне.
требования Джанго==3.2.5 djangorestframework==3.12.4
Заранее спасибо :)