Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:检测查询中使用了哪些模型_Python_Django_Django Orm_Python Decorators - Fatal编程技术网

Python Django:检测查询中使用了哪些模型

Python Django:检测查询中使用了哪些模型,python,django,django-orm,python-decorators,Python,Django,Django Orm,Python Decorators,TL;DR:需要知道在某些代码块中执行的查询中使用了哪些模型 我有一个自制的缓存系统,可以在保存特定型号时自动删除缓存 用法如下(Django Rest framework API视图集中的示例): class UsersViewSet(ListModelMixin) 模型=用户 queryset=User.objects #缓存装饰器来了 @cache\u视图(models\u to\u drop\u cache=[User,UserProfile,UserPhone]) def列表(自我、请

TL;DR:需要知道在某些代码块中执行的查询中使用了哪些模型

我有一个自制的缓存系统,可以在保存特定型号时自动删除缓存

用法如下(Django Rest framework API视图集中的示例):

class UsersViewSet(ListModelMixin)
模型=用户
queryset=User.objects
#缓存装饰器来了
@cache\u视图(models\u to\u drop\u cache=[User,UserProfile,UserPhone])
def列表(自我、请求、*args、**kwargs):
#调用real viewset方法
return super().list(请求,*args,**kwargs)
现在,当任何型号
[User,UserProfile,UserPhone]
更改时,该视图上的缓存将被删除(这是通过使用型号save signal的信号接收器实现的)

问题在于:有时并非所有型号都写入了列表(有人忘记了),缓存在应该删除的时候没有被删除

我想在方法缓存视图中添加一些
debug
参数,以便在调试模式下装饰器收集装饰方法中使用的模型的信息并输出列表

我试图寻找模型信号,但没有成功。似乎我需要修补Django的查询生成器,以检查执行的结果SQL代码中的表名

也许有更直接的方法