在模型类中多对多的关系(必须是对象)

如果要获取多对多表中的值,必须使用对象进行搜索,不能直接输入名称

例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组)
user_get=User.objects.get(username=user_name)
user_gp=adminGroup.objects.filter(group=user_get)

user_gp=User.objects.filter(username=user_name).values("admingroup__name")

例:以下这样是查找到不到

user_gp=adminGroup.objects.filter(group="admin")或
kkcc="admin"
user_gp=adminGroup.objects.filter(group=kkcc)

例:如果组要查到相应的用户,这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据组获取相应的用户)

user_get="superuser"
user_gp=adminGroup.objects.get(group=user_get).多对多的字段名.all()
user_gp=adminGroup.objects.get(group=user_get).username.all()

权限的删除(记住一定要是对象)
1.根据用户查找到组,把组删除
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(group=user_user_list)
user_user_pp.delete()

2.根据用户查找到组,从组中把该用户删除
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(多对多的字段=user_user_list)
user_user_pp.多对多的字段.remove(user_user_list)
例:
user_user_list=User.objects.get(username="admin5")
user_user_pp=adminGroup.objects.get(group=user_user_list)
user_user_pp.group.remove(user_user_list)

user_clear=User.objects.get(username=user_name)
adminGroup.objects.get(group=user_clear).group.remove(user_clear)
adminGroup.objects.get(name=group_name).group.add(user_clear)

3.1.根据组查找权限,并清空(条件:组设定的多对多关系到权)
per_menu_name="组名"
adminGroup.objects.get(name=per_menu_name).permission.clear()

3.2根据组添加权限(条件:组设定的多对多关系到权,注filter对应是set,如果是单个get对应add)
mm_jj=adminPermission.objects.filter(pname=u'上传记录')
adminGroup.objects.get(name=per_menu_name).permission.set(mm_jj)

3.3根据权限给组加权限(条件:组设定的多对多关系到权,注filter对应是set,如果是单个get对应add)
注意:反向操作一定是 权限对象.组模型名_set.add(组的对象)
mm_hh = adminGroup.objects.get(name=per_menu_name)
mm_jj=adminPermission.objects.get(pname=u'上传记录')
mm_jj.admingroup_set.add(mm_hh)

首先需要导入Permission, User模块:

from django.contrib.auth.models import Permission, User #用户 权限
添加权限:

Permission.objects.create(name=u'权限管理',content_type_id=2,codename=u'权限管理描述')

添加用户权限:

perm = Permission.objects.get(codename=u'权限管理')#首先你需要添加"权限管理"这项权限
User.objects.get(username='270001').user_permissions.add(perm)
删除用户权限:

perm = Permission.objects.get(codename=u'权限管理')#首先你需要添加"权限管理"这项权限
User.objects.get(username='270001').user_permissions.remove(perm)
批量添加用户权限:

perm1 = Permission.objects.get(codename=u'权限管理')
perm2 = Permission.objects.get(codename=u'用户管理')
User.objects.get(username='270001').user_permissions.add(perm1,perm2)
清空用户权限:

User.objects.get(username='270001').user_permissions.clear()
查询用户权限,并输出

c = User.objects.get(username='270001').user_permissions.values()
for i in c:
print i

python处理权限关系一些注意事项的更多相关文章

  1. linux+php+apache web调用python脚本权限问题解决方案

    lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...

  2. linux+php+apache web调用python脚本权限问题

    lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...

  3. Python魔法方法总结及注意事项

    1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...

  4. python第三篇:python、flask关系映射

    python中关系映射主要包括三种:一对多关系映射.一对一关系映射.多对多关系映射. 一对多关系映射 一方:Student(学生) 添加关联属性和反向引用 多方:Article(文章) 添加外键关联 ...

  5. python里正则表达式基础及注意事项

    感觉正则匹配是一件很酷的事,用得好的话可以极大地提高编程效率.虽然在html中BeautifulSoup更好用一些,但有时候还是需要使用正则匹配.所以就此做一些学习和使用过程中的笔记. python有 ...

  6. 【python】继承关系和isinstance

    来源:廖雪峰 继承关系是: object -> Animal -> Dog -> Husky 那么,isinstance()就可以告诉我们,一个对象是否是某种类型.先创建3种类型的对 ...

  7. 在Python中数据类型转换的注意事项

    在学习Python的过程接触到了数据类型转化这一过程,在实践的过程中我发现了一个小问题,我们在平常的使用中要一定注意 在str型转换成int型的过程中,str内的内容必须是整数不然会报错 如图: 在转 ...

  8. python kafka权限校验client.id

    kafka集群有权限校验,在连接时需要加入client.id.但pykafka不能配置该选项.搜索了一下,需要使用confluent-kafka 链接: https://blog.csdn.net/l ...

  9. mysql 开发进阶篇系列 55 权限与安全(安全事项 )

    一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...

随机推荐

  1. 从自旋锁、睡眠锁、读写锁到 Linux RCU 机制讲解

    ​    同步自我的 csdn 博客 6.S081 从自旋锁.睡眠锁.读写锁到 Linux RCU 机制讲解_我说我谁呢 --CSDN博客 总结一下 O/S 课程里面和锁相关的内容. 本文是 6.S0 ...

  2. Longhorn,企业级云原生容器分布式存储 - 支持 ReadWriteMany (RWX) 工作负载(实验性功能)

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...

  3. ITIL学习笔记——ITIL入门小知识

    1. 什么是ITIL? ITIL即IT基础架构库(Information Technology Infrastructure Library)由英国政府部门CCTA(Central Computing ...

  4. Mybatis出现错误org.apache.ibatis.executor.ExecutorException: No constructor found in

    错误显示没有发现构造器. 其实就是重写了构造器后,忘了补写一个默认的空参构造器了.此类的错误还经常出现在spring等这种大量使用反射的框架中.因为这些框架在调用反射的类后会默认调用默认的构造器 解决 ...

  5. Mysql慢查询explain

    转自:https://www.toutiao.com/i6776461352522220036/?tt_from=weixin&utm_campaign=client_share&wx ...

  6. MongoDB学习笔记三 - MongooseAPI操作数据

    在上一篇我们讲了如何通过Mongoose想数据库动态添加数据, 接下来我们一起来看一下如何通过Mongoose来对数据库进行增删改查等一系列操作 Model 对象的方法 remove(cinditio ...

  7. Python实现GPU加速的基本操作

    技术背景 之前写过一篇讲述如何使用pycuda来在Python上写CUDA程序的博客.这个方案的特点在于完全遵循了CUDA程序的写法,只是支持了一些常用函数的接口,如果你需要自己写CUDA算子,那么就 ...

  8. 恶意软件开发——shellcode执行的几种常见方式

    一.什么是shellcode? shellcode是一小段代码,用于利用软件漏洞作为有效载荷.它之所以被称为"shellcode",是因为它通常启动一个命令shell,攻击者可以从 ...

  9. linux centos7 移动文件到指定目录

    2021-08-26 在 centos7 环境下怎么移动一个文件到其他的目录下呢? 使用命令  mv 文件名 指定目录  即可完成该操作. 那么怎么将一个文件夹下的内容移动到另一个文件夹下呢?比如有时 ...

  10. 分布式ID生成器及redis,etcd分布式锁

    分布式id生成器 有时我们需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id.以支持业务中的高并发场景.比较典型的,电商促销时,短时间内会有大量的订单涌入到系统,比如每秒10w+.明 ...