After releasing 0.57.0, the slicing of the filtered QuerySet is impossible in the return statement.
It causes Cannot reorder a query once a slice has been taken. errror.
return QuerySet.filter()[:10]
@field()
def forecast(self, info: Info, days: Optional[int] = 7) -> list[ForecastType]:
...
# WeatherForecastRepository is QuerySet
return WeatherForecastRepository.filter()[:days]
Traceback (most recent call last):
File "/home/nonroot/.local/lib/python3.11/site-packages/graphql/execution/execute.py", line 530, in await_result
return_type, field_nodes, info, path, await result
^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/strawberry_django/fields/field.py", line 246, in async_resolver
resolved = await sync_to_async(self.get_queryset_hook(**kwargs))(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/asgiref/sync.py", line 468, in __call__
ret = await asyncio.shield(exec_coro)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/asgiref/current_thread_executor.py", line 40, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/asgiref/sync.py", line 522, in thread_handler
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/strawberry_django/fields/field.py", line 277, in qs_hook
qs = self.get_queryset(qs, info, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/strawberry_django/fields/field.py", line 321, in get_queryset
queryset = super().get_queryset(
^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/strawberry_django/pagination.py", line 351, in get_queryset
queryset = queryset.order_by("pk")
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nonroot/.local/lib/python3.11/site-packages/django/db/models/query.py", line 1698, in order_by
raise TypeError("Cannot reorder a query once a slice has been taken.")
TypeError: Cannot reorder a query once a slice has been taken.
The error happens only when Django model is missing ordering.
class WeatherForecast(Model):
class Meta():
# Setting ordering fixes the error
ordering = ["date"]
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too