Существует ли какой-либо порядок наследования PermissionRequiredMixin в Django?
Я столкнулся с этой проблемой, следуя учебнику Django 8.
Я могу перенаправить на страницу входа в систему, когда ставлю PermissionRequiredMixin
класс первым:
class AuthorCreate(PermissionRequiredMixin, CreateView):
model = Author
fields = '__all__'
initial = {'date_of_death': '05/01/2018', }
permission_required = 'catalog.add_author'
Но когда я ставлю его на вторую позицию, он не работает и переходит на страницу, где разрешение не позволяет это сделать:
class AuthorCreate(CreateView, PermissionRequiredMixin):
Я хочу знать, должен ли я всегда помещать класс PermissionRequiredMixin
на первую позицию. А как насчет LoginRequiredMixin
? Или
Да, и это документировано для LoginRequiredMixin
миксина:
Этот миксин должен находиться на самой левой позиции в списке наследования.
Для PermissionRequiredMixin
это не указано в явном виде, но работает так же.
Вам не нужно наследоваться от обоих, поскольку пользователь не может иметь требуемых прав, не войдя в систему, поэтому PermissionRequiredMixin
должно быть достаточно. Если вы действительно хотите иметь оба, LoginRequiredMixin
должен быть самым левым.