#django-admin
#django-admin
Вопрос:
Я бы хотел, чтобы каждый раз, когда пользователь посещает список моделей в Django admin, попадал на страницу с фильтром, примененным вместо никем не примененного.
В частности, я хотел бы определить применяемый фильтр на основе атрибута пользователя.
Как я могу этого добиться?
Ответ №1:
Редактировать:
Неверно истолковал ваш вопрос, извините!
Чтобы выбрать фильтр по умолчанию для пользователя на основе атрибута user, используйте changelist_view
Переопределите метод ModelAdmin queryset.
приведенный пример:
class MyModelAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(MyModelAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
измените фильтрацию на основе вашего пользовательского атрибута.
Комментарии:
1. Это приведет к отображению выбранного фильтра, выделенного в фильтре администратора?
2. Использование queryset () приведет к предварительной фильтрации объектов, прежде чем пользователю будет разрешено применять фильтры. Используя changelist_view, вы можете применить фильтр по умолчанию на основе атрибута пользователя ко всему списку объектов.