Как ограничить количество результатов в сериализаторе Django REST?
Здравствуйте, у меня есть такой сериализатор:
class ActivitiesSerializer(serializers.ModelSerializer):
activity = serializers.CharField(source='task.name')
project = serializers.CharField(source='project.name')
discipline = serializers.CharField(source='task.discipline.name')
class Meta:
model = Activities
fields = (
'id',
'activity',
'project',
'discipline',
)
Как я могу ограничить количество результатов до 10?
Вот мое мнение:
class ActivitiesAPIView(generics.ListCreateAPIView):
search_fields = ['task__name', 'task__discipline__name', 'project__name']
filter_backends = (filters.SearchFilter,)
queryset = Activities.objects.all()
serializer_class = ActivitiesSerializer
Обратите внимание, что я хочу ограничить количество результатов до 10, но я хочу выполнить поиск по всей модели, поэтому просто ограничить набор запросов до 10 не получится
Вы можете использовать пагинацию:
from rest_framework.pagination import PageNumberPagination
class DefaultPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 1000
Затем в View:
class ActivitiesAPIView(generics.ListCreateAPIView):
pagination_class = DefaultPagination
https://www.django-rest-framework.org/api-guide/pagination/#pagenumberpagination