如何在Django管理的自定义方法中获取当前用户?

2024-04-19 02:24:54 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有这个密码

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

如何在显示确认按钮方法中获取当前用户?在


Tags: 方法selfobj密码modelsdefdisplaycode
2条回答
class PostAdmin(models.ModelAdmin):
    # ...
    def display_confirm_button(self, obj):
        # some code
    # ...

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

解决方案是重写get_list_display,它可以访问request对象。然后,您可以在有权访问请求的getlist_显示中定义您的display_confirm_button,并在返回的列表中包含可调用的display_confirm_button。在

^{pr2}$

IMHO的最佳解决方案是将当前用户存储在changelist_view中,以便在您的方法中访问它。在

class PostAdmin(models.ModelAdmin):
    def changelist_view(self, request, extra_context=None):
        setattr(self, 'user', request.user)
        return super().changelist_view(request, extra_context)

    def display_confirm_button(self, obj):
        # you can use self.user here

你可以通过创建一个这样的mixin来保持干燥:

^{pr2}$

相关问题 更多 >