#django #django-admin-filters
#django #django-admin-filters
Вопрос:
Возможно ли показать list_filter только для суперпользователя?
Ответ №1:
Переопределить просмотр списка изменений
Сохраните копию исходного фильтра списка, чтобы вы могли динамически устанавливать атрибут для каждого запроса. Проверьте, является ли пользователь суперпользователем, и установите свойство фильтра списка или нет.
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 []