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]