Django admin - пользовательские страницы администратора для определенных пользователей
В моем основном url роутера у меня есть два отдельных url, по одному для каждой страницы администратора, которые я установил в моем файле администратора:
/adminmain/ URL переходит к стандартной панели администратора (admin.site.urls), в которой зарегистрировано множество различных моделей.
Но я хочу, чтобы второй URL /adminonly/ шел только к пользователям, у которых
is_admin= True в их пользовательском профиле.
Пока что мой admin.py файл ниже не достигает этой цели. Если я войду в систему как суперпользователь, то по обоим ссылкам будут показаны все модели, зарегистрированные на этой странице администратора. Но если я войду как не суперпользователь, который является администратором (is_admin = True), я просто получу сообщение: You don't have permission to view or edit anything. на ОБОИХ страницах. Я хочу, чтобы этот пользователь видел модели, зарегистрированные для страницы /adminonly/.
Мой admin.py:
from django.contrib.admin import ModelAdmin, site, AdminSite
from .models import Post
class PostAdmin(ModelAdmin):
list_display = (
'id',
'slug',
'title',
'author',
'publish_date'
)
def has_view_permission(self, request, obj=None):
if request.user.is_admin:
return True
def has_add_permission(self, request):
if request.user.is_admin:
return True
def has_change_permission(self, request, obj=None):
if request.user.is_admin:
return True
def has_delete_permission(self, request, obj=None):
if request.user.is_admin:
return True
class PostsAdmin2(AdminSite):
site_header = 'Posts Admin'
def has_permission(self, request):
return request.user.is_admin
posts_site2 = PostsAdmin2(name='PostsAdmin')
#default admin page- only for superusers, /adminmain/ URL goes here
site.register(Post, PostAdmin)
site.register(..many more models and Admin classes registered)
#second admin page- meant for any user with is_admin = True, /adminonly/ URL goes here
posts_site2.register(Post, PostAdmin2)