我正在处理的项目已经脱离了django权限模型,并使用了自己开发的权限系统。
这是django管理员的问题。各位我们的models.py hase code similer this:
def is_admin(user):
return user.groups.filter(name__contains="APP Admin").exists()
def is_publisher(user):
return user.groups.filter(name="101 - APP Publisher").exists()
def is_app_user(user):
return is_admin(user) or is_publisher(user) or user.is_superuser
#admin.site.disable_action('delete_selected')
class DefaultPermitMixin(object):
def has_change_permission(self, request, obj=None):
return is_app_user(request.user)
def has_add_permission(self, request):
return request.user.is_superuser
def has_delete_permission(self, request, obj=None):
return request.user.is_superuser
所有ModelAdmins派生自DefaultPermitMixin,并且大多数都具有get_readonly_fields
函数来实现字段或对象级别权限。
问题是django-admin正在使用Permissions来决定是否显示应用程序。如果我只为用户提供一个权限,那么一切都应该如此。如果用户没有应用的权限,则该应用会被隐藏,即使has_*_permission
将返回true。
有没有办法覆盖此行为并强制管理员显示我的应用程序?
答案 0 :(得分:1)
我认为您可以创建自定义身份验证后端并覆盖has_module_perms
方法:
https://docs.djangoproject.com/en/dev/topics/auth/customizing/