Мне удалось отключить поля формы, но пользователь все еще может использовать Choose all
для выбора всех групп или всех разрешений. Как я могу отключить / удалить Choose all
для штатного пользователя?
Мне нужна эта причина, потому что я хочу, чтобы некоторые сотрудники могли изменять пользователя Personal Info
, но не изменять Permissions
или Important dates
section.
Вот код, который я использовал до сих пор:
class UserAdmin(BaseUserAdmin):
inlines = (AccountInline, )
def get_form(self, request, obj=None, **kwargs):
form = super().get_form(request, obj, **kwargs)
is_superuser = request.user.is_superuser
disabled_fields = set() # type: Set[str]
# Prevent non-superusers from editing their own permissions
if not is_superuser:
disabled_fields |= {
'username',
'is_staff',
'is_superuser',
'user_permissions',
'groups',
'last_login',
'date_joined',
}
for f in disabled_fields:
if f in form.base_fields:
form.base_fields[f].disabled = True
return form