Skip to main content
 首页 » 编程设计

python之如何在 Django Admin 的自定义方法中获取当前用户

2025年05月04日20kerrycode

所以,我有这段代码

class PostAdmin(models.ModelAdmin): 
    # ... 
    def display_confirm_button(self, obj): 
        # some code 
    # ... 

display_confirm_button方法如何获取当前用户?

请您参考如下方法:

class PostAdmin(models.ModelAdmin): 
    # ... 
    def display_confirm_button(self, obj): 
        # some code 
    # ... 

要访问登录用户,您需要访问请求对象。无法在您的 display_confirm_button 方法中访问请求,因为您只能访问 obj,即正在编辑的对象。

解决方案是覆盖 get_list_display,它可以访问 request 对象。然后,您可以定义您的 display_confirm_button inside get_list_display,它可以访问该请求,并在您返回的列表中包含可调用的 display_confirm_button。

class MyModelAdmin(admin.ModelAdmin): 
    def get_list_display(self, request): 
 
        def display_confirm_button(obj): 
            out = logic_that_requires_user(request.user) 
            return out 
 
        return ['field1', 'field2', display_confirm_button, ...]