Как я могу повторно отфильтровать queryset без проблем N+1 в Django?

У меня простая N+1 проблема с кверисетом в Django.

Простой views.py пример кода проблемы, с которой я столкнулся.

a_queryset = AA.objects.filter(user=request.user).all()
# some codes in here with a_queryset . . .
b_queryset = a_queryset.filter(id__in=[3,4,5])  # re-filtered
# some codes in here with b_queryset . . .
c_queryset = a_queryset.get(id=10)  # re-filtered
# some codes in here with c_queryset . . .

У меня проблема N+1, которая заключается в трех SELECT запросах, и я уже знаю, что эти коды вызывают ее.

Было бы очень хорошо вызывать queryset сразу, но я не могу, потому что есть несколько задач с использованием этих queryset в середине.

Есть ли способ решить эту проблему? Что мне делать?

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