首页 > 解决方案 > Django:从 admin.py 访问没有请求对象的方法的用户信息?

问题描述

姜戈 1.11。

admin.py我有:

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

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

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数据?我没有找到任何相关的selfmy_object

谢谢

标签: djangorequestadminsubclass

解决方案


访问当前请求的最简单方法是使用crequest。你可以像这样使用它:

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:

推荐阅读