Django 5.0.2: TypeError: Невозможно отфильтровать запрос после того, как был взят фрагмент

Почему это не работает? Я получаю ошибку "Cannot filter a query once a slice has been taken." Что я могу сделать, чтобы решить эту проблему?

class LogbookLastViewSet(viewsets.ReadOnlyModelViewSet):
    serializer_class = LogbookSerializer
    permission_classes = [permissions.IsAuthenticated]
    filterset_fields = ['organizationID']
    
    def get_queryset(self):
        queryset = Logbook.objects.filter(organizationID='1111').order_by('-created')[:10]
        return queryset

Мне нужно что-то вроде этого:

SELECT * FROM logbook WHERE organizationID='1111' ORDER_BY created LIMIT 10;

This is due to the filterset_fields. Such filtering will happen after the .get_queryset(…) [drf-doc], but since you slice in the get_queryset, additional filtering is not possible.

Вместо этого вы можете выполнить нарезку в .paginate_queryset(…):

class LogbookLastViewSet(viewsets.ReadOnlyModelViewSet):
    serializer_class = LogbookSerializer
    permission_classes = [permissions.IsAuthenticated]
    filterset_fields = ['organizationID']
    queryset = Logbook.objects.all()

    def paginate_queryset(self, queryset):
        return queryset[:10]
Вернуться на верх