如何在管理界面中将模型完全只读?这是一种日志表,我使用管理功能进行搜索,排序,过滤等,但不需要修改日志.
如果这看起来像重复,这不是我想要做的:
我有一个Django模型,我希望它只是readonly.不允许添加和编辑.
我在readAdly中标记了所有字段,并在ModelAdmin中覆盖了has_add_permission:
class SomeModelAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
Run Code Online (Sandbox Code Playgroud)
有类似的has_edit_permission吗?可以禁用哪个删除"保存"和"保存并继续"按钮?并通过简单的"关闭并返回"按钮替换.
Django文档仅提及只读字段而不是覆盖编辑权限.
由于django admin在其auth中有三个权限:添加,更改,删除!我想在管理面板中添加此身份验证中的查看权限.我知道我必须自定义权限才能在'auth |权限|查看权限'中添加查看权限以查看所有条目!
方式:
[X] 1.在默认权限列表中添加"查看"
#./contrib/auth/management/init.py
def _get_all_permissions(opts):
"Returns (codename, name) for all permissions in the given opts."
perms = []
for action in ('add', 'change', 'delete', 'view'):
perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))
return perms + list(opts.permissions)
Run Code Online (Sandbox Code Playgroud)
[X] 2.测试'视图'权限被添加到所有模型
run manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
我确认现在为auth_permissions表中的所有表添加了视图权限
[X] 3.将"get_view_permission"添加到默认模型类.
将get_view_permission添加到模型类.您可以在./db/models/options.py文件中找到它.管理类将在下一步中使用它.
def get_view_permission(self):
return 'view_%s' % self.object_name.lower()
Run Code Online (Sandbox Code Playgroud)
[X] 4.将"has_view_permission"添加到默认管理类
为了保持一致,我要将"has_view_permission"添加到系统中.看起来它应该在contrib/admin/options.py中的某个地方.确保用户具有更改权限,然后自动隐含查看权限.
# /contrib/admin/options.py
# Added has_view_permissions
def has_view_permission(self, request, obj=None):
"""
Returns True if the given request has permission to …Run Code Online (Sandbox Code Playgroud)