如何从 Django 模型定义中访问用户信息?

How to access user information from Django model definition?

我需要在 model's save() 覆盖中包含当前用户信息以用于记录目的。

即时保存时我正在写日志条目。在该记录中,我还需要有当前用户。保存可以在常规视图中进行,我可以在其中访问请求,但是在管理会话中我无法访问请求。

我是不是漏掉了什么?

django-cuser 救援!这个库添加了可以在视图、模型方法等中调用的中间件,以获取当前用户。它有更多的功能,但本质上你可以在任何模型、modelAdmin 等方法中访问当前用户。

有访问用户的方法 in modelAdmin instances,但我不会在您的视图和自定义管理实例中构建方法,而是坚持使用保存方法。

设置好后,可以这样调用:

from cuser.middleware import CuserMiddleware

class SomeModel(models.Model):
    def save(self, *args, **kwargs):
        user = CuserMiddleware.get_user()
        # you can now access any attributes of the current user
        super(SomeModel,self).save(*args, **kwargs)