Django 如何在admin.py中访问当前用户

Django 如何在admin.py中访问当前用户,django,Django,在我的admin.py文件中,我试图将时间显示为登录用户的时区。如果我有下面这样的内容,我如何传入请求以访问request.user.userprofile,以便动态设置时区 class CapAdmin(admin.ModelAdmin): ... list_display = ('time_clicked', 'source_name', 'link') .... def time_clicked(self, instance): local_tz = pytz.t

在我的admin.py文件中,我试图将时间显示为登录用户的时区。如果我有下面这样的内容,我如何传入请求以访问request.user.userprofile,以便动态设置时区

class CapAdmin(admin.ModelAdmin):
...
list_display = ('time_clicked', 'source_name', 'link')
....

    def time_clicked(self, instance):
        local_tz = pytz.timezone('America/Chicago') # I want the user timezone here
        local_dt = instance.click_time.replace(tzinfo=pytz.utc).astimezone(local_tz)
        return mark_safe("{0}").format(local_tz.normalize(local_dt).strftime('%b %d, %Y, %I:%M %p'))

您没有访问该用户的权限。但你不需要它;您应该在中间件中激活时区,如中所述。比如:

class TimezoneMiddleware(MiddlewareMixin):
    def process_request(self, request):
        if request.user.is_authenticated and request.user.timezone
            tzname = request.user.timezone
            timezone.activate(pytz.timezone(tzname))
        else:
            timezone.deactivate()
将此添加到您的中间件设置中。现在,在管理类中,您可以执行以下操作:

from django.utils.timezone import localtime

def time_clicked(self, instance):
    return localtime(instance.time_clicked)

这个代码是哪个类的一部分?这叫什么?@DanielRoseman抱歉我更新了我的帖子。它是CapAdmin类的一部分,正在列表显示中调用