Django:从admin.py中访问用户信息以获取没有请求对象的方法? [英] Django: access to user info from admin.py for methods with no request object?

查看:40
本文介绍了Django:从admin.py中访问用户信息以获取没有请求对象的方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Django 1.11.

Django 1.11.

admin.py 中,我有:

class AuditAdmin(DeactivateMixin, admin.ModelAdmin):
   """all the superclass stuff"""

使用各种自定义方法从中将模型的内容子类化:

from which I subclass my model's stuff with various custom methods:

class SomeModelAdmin(AuditAdmin):
    list_display = ["filed1", "filed2", "field3"] 

    def get_queryset(self, request):
        if request.user.is_superuser: 
            #do something extra

    def inline_add_somemodelattribute1(self, my_object):
        #how to access user if I don't have request ?

因此,在 inline_add_somemodelattribute1 方法内部,我需要根据用户做出决策,但是该方法不以 request 作为参数.在这种情况下,如何获取我的 user 数据?我没有找到与 self my_object

So inside inline_add_somemodelattribute1 method I need to make decision based on the user but that method does not take request as an argument. How do I get my user data in this case? I did not find anything relevant in self or my_object

谢谢

推荐答案

访问当前请求的最简单方法是使用

Easiest way of access current request is using crequest. You can use it like this:

from crequest.middleware import CrequestMiddleware

class SomeModelAdmin(...):
     ...

     def inline_add_somemodelattribute1(self, my_object):
          crequest = CrequestMiddleware.get_request()
          # your logics here for example: if crequest.user.pk == 1:

这篇关于Django:从admin.py中访问用户信息以获取没有请求对象的方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆