Убрать кеш для queryset c .raw в django

Есть django c rest_framework. Все запросы согласно документации django выполняются как новые (не кешируясь) если выполнять как Model.objects.all(). Но если же использовать Model.objects.raw('''какой-то запрос''') то выполняется только 1 раз, далее при следующем запросе возвращается уже готовый ответ. Сам запрос из себя представляет выборку из многих связанных таблиц с определенными условиями. В settings.py пробовал кеш выключать, ставить на 1 секунду 'TIMEOUT': 1, использовать DummyCache. Ничего не помогает. Запрос использую внутри viewsets.ModelViewSet для API в виде queryset = CustomModel.objects.raw(). Есть ли способ заставить .raw() каждый раз выполняться как новый запрос?


Ответы (1 шт):

Автор решения: Сервер Усеинов

Решил с помощью get_queryset

class PairSet(viewsets.ModelViewSet):
permission_classes = [HasAPIKey]
queryset = CustomSql.objects.raw('''
        запрос''')
    serializer_class = ExchangePairSerializer

    def get_queryset(self):
        assert self.queryset is not None, (
                "'%s' should either include a `queryset` attribute, "
                "or override the `get_queryset()` method."
                % self.__class__.__name__
        )
        queryset = CustomSql.objects.raw('''
        запрос''')
        return queryset
→ Ссылка