Убрать кеш для 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