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

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

例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组)
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. oracle给system用户增加sysdba和sysoper 角色

    第一步:先用sys用户登录到数据库 第二步:打开一个sql窗口,输入grant sysoper to system;  点击执行 第三步:等待执行完成之后,再执行grant sysdba to sys ...

  2. 你知道那些JVM性能调优

    设定堆内存大小 -Xms :堆初始空间大小 -Xmx : 堆内存最大限制. 设置新生代大小.新生代不宜太小,否则会有大量对象涌入老年代 -XX:NewSize : 新生代大小 -XX:NewRatio ...

  3. shell脚本基本使用教程

    sh脚本的固定第一行 #!/bin/bash 变量 #!/bin/bash var1=1 var2=2 var3=$[var1+var2] echo "$var3" 传达参数 sh ...

  4. 有了Swagger2,再也不用为写Api文档头疼了

    1.为什么要写Api文档 现在,前后端分离的开发模式已经非常流行,后端开发工程师只负责完成后端接口,前端页面的开发和渲染完全由前端工程师完成. 问题来了,前端工程师怎么知道后端接口的具体定义呢?答案是 ...

  5. jsoup的Document类

    一.简介 Document是一个装载html的文档类,它是jsoup一个非常重要的类.类声明:public class Document extends Element .Document是Node间 ...

  6. WPF---依赖属性(二)

    一.概要 我们将会通过一个简单的综合例子来阐述下依赖属性的变化. 场景:我们在一个文本框中输入一个数字,然后对应的panel中会出现对应的椭圆,椭圆的个数与输入的文本相同. 我们在MainWindow ...

  7. LeetCoded第239题题解--滑动窗口最大值

    滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口每次只向右移动一位. 返回滑动窗口中的最大值. 进 ...

  8. jQuery中的子(后代)元素过滤选择器(四、六):nth-child()、first-child、last-child、only-child

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  9. Web安全-CDN相关技术

    CDN介绍 CDN的全称是Content Delivery Network,即内容分发网络.CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发. ...

  10. 刷题-力扣-1137. 第 N 个泰波那契数

    1137. 第 N 个泰波那契数 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/n-th-tribonacci-number 著作权 ...