gpt4 book ai didi

python - 如何在自定义保存方法中获取当前用户?

转载 作者:行者123 更新时间:2023-11-28 18:36:03 25 4
gpt4 key购买 nike

我正在使用 Django 1.8 并且我正在尝试实现一个简单的模型日志记录。我已经覆盖了类的保存方法。但是,我还想记录哪个用户负责更改,但是请求对象不可用,因为它没有传递到保存方法中。我不想在所有出现的保存方法中都传递给用户,因为我使用的是 django-rest-framework

这是我的代码:

def save(self, *args, **kwargs):
order = super(Order, self).save(*args, **kwargs)
try:
json_object = serializers.serialize('json', [ order, ])
# I want to log the current user too.
OrderLog.objects.create(order = order, object = json_object)
except Exception as e:
print e
return order

最佳答案

可以获取当前用户。你必须为它实现你自己的小中间件。

您需要以下方法和中间件类。

你的中间件文件

from threading import local

_thread_locals = local()

def get_current_user():
return getattr(_thread_locals, 'user', None)

class ThreadLocals( object ):
"""Middleware that gets various objects from the request object and saves them in thread local storage."""
def process_request( self, request ):
_thread_locals.user = getattr( request, 'user', None )

设置.py

MIDDLEWARE_CLASSES += (
"your.path.to.middleware.ThreadLocals"
)

你的保存方法有些

save(self):
from your.path.to.middleware import get_current_user

user = get_current_user()

关于python - 如何在自定义保存方法中获取当前用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32425157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com