#python #django #django-orm #python-decorators
#python #django #django-orm #python-декораторы
Вопрос:
TL; DR: нужно знать, какие модели использовались в запросах, выполняемых в некотором блоке кода
У меня есть самодельная система кэширования, которая имеет возможность автоматически удалять кеш при сохранении определенных моделей.
Использование (пример в наборе представлений API Django Rest framework):
class UsersViewSet(ListModelMixin)
model = User
queryset = User.objects
# Here cache decorator goes
@cache_view(models_to_drop_cache=[User, UserProfile, UserPhone])
def list(self, request, *args, **kwargs):
# calling the real viewset method
return super().list(request, *args, **kwargs)
Теперь, когда какая-либо из моделей [User, UserProfile, UserPhone]
изменяется, кэш в этом представлении будет удален (это достигается с помощью приемника сигнала сохранения сигнала модели).
Проблема в том, что иногда не все модели записывались в список (кто-то забыл), и кэш не удалялся, когда это было необходимо.
Я хочу добавить некоторый debug
аргумент в метод cache_view, чтобы в режиме отладки декоратор собирал информацию о моделях, которые использовались в декорированном методе, и выводил список.
Я пытался искать сигналы модели, но безуспешно. Похоже, мне нужно использовать конструктор запросов Django для проверки имен таблиц в результирующем коде SQL, который был выполнен.
Может быть, есть более простой метод?