1

本质上,我试图在我的一个应用程序中访问 models.py 中的当前用户。我已经在views.py等中阅读了关于你不应该如何执行此操作以及应该如何执行此操作等内容。我想要完成的只是利用Django admin后端,即视图.py 根本不使用。

这就是我转向threadlocals的原因。我查看了一些与此相关的问题,我发现的只是这个死链接:http ://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser

坦率地说,我很困惑,希望有人可以为我提供一些关于如何使用 threadlocals 的信息,包括我需要添加到我的 settings.py 中的哪些设置以及我需要制作哪些文件的详细信息。

4

1 回答 1

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
于 2013-03-14T19:29:31.117 回答