基本上,我正在尝试访问其中一个应用中的models.py中的当前用户。我已经读过你不应该这样做以及你应该如何在views.py等中做到这一点。我想要完成的只是利用Django管理员后端,意思是观点完全不使用.py。
这就是我转向threadlocals的原因。我已经查看了很多与此有关的问题,我发现这是一个死链接:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser
坦率地说,我很难过,希望有人可以向我提供有关如何使用threadlocals的一些信息,包括我需要添加到settings.py的设置以及我需要制作的文件的详细信息。答案 0 :(得分:2)
根据评论,如果您的Entry
模型具有User
的外键,则无需使用threadlocals以获取有关用户的所有信息。模型已保存或删除。
Signals子框架将为您提供所需的能力。例如,pre_delete
可用于在删除对象之前发送电子邮件。在创建或更新条目后,可以发送post_save
。
信号处理程序将接收触发信号的对象实例,您将能够访问用户对象,包括用于发送电子邮件的所有属性。虽然只有User的id存储在数据库中,但Django将允许您通过ForeignKey字段访问整个对象。
[编辑]
要在信号处理程序中获取对象实例,请从传递给处理程序的kwargs中检索它:
def my_callback(sender, **kwargs):
instance = kwargs.get('instance')
# you can now reference instance.user
# send email code here