#django
#django
Вопрос:
Я создал приложение Django, имеющее несколько типов пользователей.
Есть один суперпользователь, который может получить доступ ко всем данным и внести изменения. Есть несколько штатных пользователей, которые имеют ограниченный доступ, в основном для просмотра, но могут добавлять новых пользователей и группы.
Ниже приведены групповые разрешения для штатного пользователя. Он может добавить новую группу, но не может изменять, просматривать или удалять существующую.
Но когда я пытаюсь создать новую группу, он может назначить все возможные разрешения новой группе, даже если у него самого нет этих разрешений. Ниже приведен вид, который он может видеть при создании новой группы.
Как я могу показывать только те разрешения, которые есть у самого пользователя staff, и не показывать полные параметры?
Я использую Django 2.1
Ответ №1:
Это сработало для меня: Создание групп с различными разрешениями Предотвращает добавление или удаление групп
#other imports
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
class UserAdmin(BaseUserAdmin):
list_display = ('username', 'email', 'is_staff')
list_filter = ('is_staff',)
#this displays after initial user creation for additional information
fieldsets = (
(None, {'fields': ('username', 'email', 'password')}),
('Personal info', {'fields': ('first_name',)}),
('Permissions', {'fields': ('is_staff', 'is_active', 'groups')}),
)
# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin
# overrides get_fieldsets to use this attribute when creating a user.
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2')}
),
)
search_fields = ('username',)
ordering = ('username',)
#unregister the default user admin
admin.site.unregister(User)
# Now register the new UserAdmin...
admin.site.register(User, UserAdmin)
Таким образом, пользователь не может получить дополнительные разрешения