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

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

例:这样才能查找到(下面例子是针对,组设置多对多关到用户,现在要根据用户获取相应的组)
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

最新文章

  1. 小记:目标数组的长度不够。请检查 destIndex 和长度以及数组的下限。
  2. 转:认识MyBean
  3. Centos Odoo Service Config
  4. POI教程之第一讲:创建新工作簿, Sheet 页,创建单元格
  5. MyEclipse下如何安装svn插件
  6. 为什么要baidu/Google问题 尽量少在群里问问题
  7. 用Java实现向Cassandra数据库中插入和查询数据
  8. sqlite3 语句总结
  9. How to make project not set to be build
  10. Eclipse文件覆盖问题
  11. Quartz.net开源作业调度
  12. hrbustoj 2283 heap解题报告
  13. java开发必读 书单
  14. linux中权限对文件和目录的作用
  15. erlang的热更新
  16. python3+selenium框架设计07-unittest单元测试框架
  17. python的if条件判断
  18. js与jQuery操作select大全
  19. mac OS配置用户全局环境变量(设置字符集为UTF8)
  20. Golang中defer、return、返回值之间执行顺序的坑

热门文章

  1. CSS Transform完全指南(第二版) #flight.Archives007
  2. 06.SpringBoot核心技术
  3. 为什么网络损伤仪WANsim中没有流量通过
  4. SpringBoot整合SpringBatch
  5. ASP net core面试题汇总及答案
  6. C# 中的CTS, CLS, CLR 的理解
  7. 【转】Linux tar命令详解
  8. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器
  9. LeetCode入门指南 之 栈和队列
  10. springcloud超时重试机制的先后顺序