Как я могу определить и сослаться на пользовательские группы пользователей в Django, по которым я могу сортировать, например, user.is_superuser?
Я создал несколько пользовательских групп в моем приложении Django, потому что я хочу показывать им разные наборы полей администратора.
Я думал, что они будут работать аналогично user.is_superuser
.
Но они не делают этого.
У меня есть этот def в моем ModelAdmin:
def is_approver(user):
return user.groups.filter(name='approver').exists()
(Кстати, я не знаю, как это называется. Вы называете это просто "def"?)
Так это работает:
def get_fieldsets(self, request, obj=None):
if request.user.is_superuser:
return self.superuser_fieldset
Я получаю ожидаемый набор полей.
Но это не работает:
def get_fieldsets(self, request, obj=None):
if request.user.is_approver:
return self.approver_fieldset
Однако это работает:
def get_fieldsets(self, request, obj=None):
if request.user.groups.filter(name='approvers').exists():
return self.approvers_fieldset
Итак, я полагаю, мой основной вопрос: почему мои def
работают не так, как я ожидаю?
(Python 3.9.7, Django 3.1)
добавьте этот код в модель пользователя
@property
def is_approver(self):
return self.groups.filter(name='approver').exists()