2012-03-28 53 views
2

有没有方法可以访问models.py中的request.user或信号处理程序中的?Django在models.py或信号处理程序中登录用户

我正在使用m2m_changed信号并将其定义在我的models.py中 - 我想访问登录的用户。

有没有办法做到这一点?

+1

你需要什么信息?您必须以某种方式将此数据传递给模型层,并且适当的解决方案取决于数据将如何使用。 – 2012-03-28 22:20:52

+0

我想在我创建的通知中使用它 - 即。在这种情况下的'演员'是登录用户。 – 2012-03-28 22:43:23

回答

1

我假设用户进行更改不一定是记录所有者或作者。这意味着模型查找毫无用处,您需要通过信号传递这些数据。

好方法是创建自定义信号,将当前用户作为属性之一,并在保存数据时将其发送到视图代码中。

+0

完美 - 正是我所需要的 - 谢谢! – 2012-03-28 22:57:25

+0

其实 - 有没有办法扩展m2m_changed - 我真的需要post_add发送信号给m2m_changed,但我想访问request.user there – 2012-03-28 23:33:16

+0

不,你不能真正修改现有的信号,除非你改变每一个地方它发出的代码。你可以做的是将request.user分配给视图代码中的某个模型属性,然后在信号处理程序中检查它。请记住,如果不同视图修改数据或根本没有视图级别(脚本,后台任务等),它将不会存在。 – 2012-03-28 23:47:25