Django为所有Model增加同样的权限的便捷方法
2012-11-26 11:18
344 查看
Django自带的contrib.auth库有着强大的管理功能,它会为每个模块创建3个默认权限:add, change, delete。但是,有时我们想为所有model增加同样的权限(如read),那该怎么办呢?
如果在每个Model的class Meta中增加permissions,那就要修改所有Model增加相同的行,那方法就太土了。
一个捷径就是: 修改Django.contrib.auth的一行代码就可以了。文件路径为 django\contrib\auth\management\__init__.py, 代码片段如下:
在这一行中增加相应的权限即可,如:
for action in ('add', 'change', 'delete'):
改成:
for action in ('read', 'add', 'change', 'delete'):
然后运行python manage.py syncdb,就可以看到auth_permission表后面已经增加了所有model的read权限了。是不是很便捷呢?
关于增加某个Model的自定义权限可以参考官方文档:https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions
如果在每个Model的class Meta中增加permissions,那就要修改所有Model增加相同的行,那方法就太土了。
一个捷径就是: 修改Django.contrib.auth的一行代码就可以了。文件路径为 django\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'): perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw))) return perms + list(opts.permissions)
在这一行中增加相应的权限即可,如:
for action in ('add', 'change', 'delete'):
改成:
for action in ('read', 'add', 'change', 'delete'):
然后运行python manage.py syncdb,就可以看到auth_permission表后面已经增加了所有model的read权限了。是不是很便捷呢?
关于增加某个Model的自定义权限可以参考官方文档:https://docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions
相关文章推荐
- Django为所有Model增加同样的权限的便捷方法
- Django admin 常用方法 model 增加只读权限
- AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
- django-rest 重写ModelViewSet中的create方法
- oracle 10g 为新建用户并赋予所有表操作权限的方法
- Oracle删除当前用户下所有表的方法适用于有或没有删除权限
- sharepoint 2010 所有list新建按钮消失和管理员权限丢失的解决方法
- 详解Django model转字典的几种方法
- AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
- django定义Model中的方法和属性
- 申请SSL证书验证域名所有权限的其他方法Alternative Methods of Domain Control Validation (DCV)
- oracle 10g 为新建用户并赋予所有表操作权限的方法
- 文件exer1的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限,下列哪个命令是对的?
- 浅谈django model的get和filter方法的区别(必看篇)
- 四【用django2.0来开发】后台会员管理(二) ModelForm表单的使用方法以及数据验证
- Extjs中getSelectModel()的所有方法
- Django中Model的使用方法教程
- chmod +x *.sh 这个命令是为sh文件增加可执行权限; chmod +R 777 *.* 对当前目录下的所有子目录和子文件进行 777权限的变更;通在安装软件时复制相关文件。
- 提高django model效率的几个小方法
- Django项目中model增加了新字段怎样更新?