django基础知识~models畅谈

时间:2019-06-13
本文章向大家介绍django基础知识~models畅谈,主要包括django基础知识~models畅谈使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一 简介 来聊聊 models
二 查询详解
   1 models.object.filter(条件)
     1 可以获取多条记录,通过distinct()函数进行排重
     2 exclude()和filter()对应 一个是排除一个是过滤
     3 User.objects.filter().first()
    2 models.object.get(条件)
     1 只能获取单条唯一记录,否则会报错
三 通用属性
   .query属性
    str(Author.objects.all().query) 通过.query属性进行sql原始打印
四 多对多查询
  1 建立多对多属性的话,django会自动建立关联models的中间表,存储两个models的相关ID对照
  2 反向查询(子表查询母表,或者母表查询子表)->推荐使用
     母表对象.filter(表表名小写__子表字段名="过滤条件")
     比如用户和角色表,想查用户拥有的权限,可以直接通过角色表进行反向查询即可
     Role.objects.filter(user__name='dengzhihang').values('permissions__url')
  3 泛解析示例代码
   SELECT `cmdb_permission`.`url` FROM `cmdb_role #用户role表 对应Role`
   INNER JOIN `cmdb_user_roles// 用户 role和user中间表` ON (`cmdb_role`.`id` = `cmdb_user_roles`.`role_id`)
   LEFT OUTER JOIN `cmdb_role_permissions 用户role和permissions中间表`  
   ON (`cmdb_role`.`id` = `cmdb_role_permissions`.`role_id`)
   LEFT OUTER JOIN `cmdb_permission /#permission权限表
   ON (`cmdb_role_permissions`.`permission_id` = `cmdb_permission`.`id`) WHERE `cmdb_user_roles`.`user_id` = 22 #请注意这里的条件过滤

原文地址:https://www.cnblogs.com/danhuangpai/p/11016010.html