【发布时间】:2011-05-26 23:09:40
【问题描述】:
是否可以仅为超级用户显示 list_filter?
【问题讨论】:
标签: django django-admin-filters
是否可以仅为超级用户显示 list_filter?
【问题讨论】:
标签: django django-admin-filters
存储原始列表过滤器的副本,以便您可以根据请求动态设置属性。检查用户是否为超级用户,并设置列表过滤属性。
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)
【讨论】:
从 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 []
【讨论】: