我正在尝试创建一个应用程序,比如项目中的activitylogapp,它可以检测另一个应用程序(比如Employeeapp)中的某些模型是否发生了更改/更新,并保留日志。我不想碰Employeeapp。我可以使用activitylodapp的models.py中的信号访问更改。由此:
from django.db.models.signals import post_save
from anotherapp.models import Employee
from django.dispatch import receiver
@receiver(post_save, sender=Employee)
def save_handler(sender, instance, created, **kswargs):
"Things I want to do"
问题是,我还想访问哪些用户进行了这些更改,比如views.py中使用的request.user.username。 是否可以不显式地将请求对象从视图注入到activitylog应用程序
您可以使用
process_request
将原语middleware添加到“activitylogapp”中以存储request
至于存储
request
,我看到两个选项:难看但实施起来很快。全局保存
request
。它不应该影响任何事情,因为您为每个请求获得一个新的克隆线程,该线程在处理请求后立即终止更复杂,没有全局变量。利用Django信号为其接收器函数创建weak references这一事实。因此,您可以将
save_handler
附加到request
本身,它们最终将GC-ed在一起。类似于:相关问题 更多 >
编程相关推荐