Django REST Framework пагинация изменение модели упорядочивание

По какой-то причине, когда я запускаю paginate_queryset(queryset), порядок меняется и не является тем, который я хочу.

У меня есть модель:

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    history_date = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'myapp_historicalmymodel'
        ordering = ("-history_date",)

С установленным полем ordering.

Тогда у меня есть дополнительное действие в ViewSet:

class MyModelViewSet(viewsets.ModelViewSet):
    serializer_class = MyModelSerializer
    permission_classes = [permissions.IsAuthenticated]
    queryset = MyModel.objects.all()

    @action(detail=False, methods=['get'], url_path='history', url_name='history')
    def history(self, request):
        items = HistoricalMyModel.objects.all()
        print(items) # FIRST PRINT
        page = self.paginate_queryset(items)
        print(page) # SECOND PRINT
        if page is not None:
            serializer = HistoricalMyModelSerializer(page, many=True, context={'request': request})
            return self.get_paginated_response(serializer.data)
        serializer = HistoricalMyModelSerializer(items, many=True)
        return Response(serializer.data)

Первый print печатает элементы в настроенном порядке, используя ordering = ("-history_date",), например:

<QuerySet [<HistoricalMyModel: HistoricalMyModel object (4)>, <HistoricalMyModel: HistoricalMyModel object (3)>, <HistoricalMyModel: HistoricalMyModel object (2)>, <HistoricalMyModel: HistoricalMyModel object (1)>]>

Здесь вы можете увидеть порядок 4,3,2,1.

Но второй print выводит элементы в каком-то стандартном порядке Postgres, кажется:

[<HistoricalMyModel: HistoricalMyModel object (3)>, <HistoricalMyModel: HistoricalMyModel object (4)>, <HistoricalMyModel: HistoricalMyModel object (1)>, <HistoricalMyModel: HistoricalMyModel object (2)>]

Здесь вы можете увидеть порядок 3,4,1,2.

Почему после выполнения items меняется порядок self.paginate_queryset(items)?

Вернуться на верх