【问题标题】:Django - Admin list_filter only for superuser?Django - 管理员 list_filter 仅适用于超级用户?
【发布时间】:2011-05-26 23:09:40
【问题描述】:

是否可以仅为超级用户显示 list_filter?

【问题讨论】:

    标签: django django-admin-filters


    【解决方案1】:

    Override changelist view

    存储原始列表过滤器的副本,以便您可以根据请求动态设置属性。检查用户是否为超级用户,并设置列表过滤属性。

    class MyAdmin(admin.ModelAdmin):
        list_filter = ('id',)
        _list_filter = list_filter
        # must store list filter reference somewhere
    
        def changelist_view(self, request, extra_context=None):    
            if not request.user.is_superuser:
                self.list_filter = None
            else:
                self.list_filter = self._list_filter
            return super(MyAdmin, self).changelist_view(request, extra_context)
    

    【讨论】:

      【解决方案2】:

      从 Django 1.5 开始,你可以使用ModelAdmin.get_list_filter:

      class MyAdmin(admin.ModelAdmin):
          def get_list_filter(self, request):
              if request.user.is_superuser:
                  return ['field']
              else:
                  return []
      

      【讨论】:

        猜你喜欢
        • 2018-12-10
        • 2016-01-22
        • 2013-05-09
        • 1970-01-01
        • 2011-10-08
        • 2016-03-05
        • 1970-01-01
        • 2018-08-29
        • 2020-02-18
        相关资源
        最近更新 更多