django orm 关联表数据,即sql的多表查询 例如两个表: Apply表中定义了字段position为foreignkey指向job表的id字段 1.通过父表job查找子表apply中的字段: job.objects.values( 'id', 'job_type', 'apply__date_created') apply__date_created 表示查找Apply表中的date_created字段,通过父表查找子表就是反向查找,反向查找字段的表示方法:小写的子表tablename+双下线+子表字段名 后台的SQL: SELECT `job`.`id`, `job`.`job_type`, `apply`.`date_created` FROM`job` LEFT OUTER JOIN `apply` ON ( `job`.`id` = `apply`.`position_id` ) 2.加filter方法筛选子表字段: Job.objects.filter(apply__name=’zhang’).values( 'id', 'job_type', 'apply__date_created') 后台的SQL: SELECT `job`.`id`, `job`.`job_type`,`apply`.`date_created` FROM `job` LEFT OUTER JOIN `apply` ON ( `job`.`id` =`apply`.`position_id` ) where apply.name=’zhang’ 3.再加一个user表,定义job的user字段foreignkey指向user表的id字段,通过表job查询user表的其他字段,即三表查询 Job.objects.filter(apply__name=’zhang’).values( 'id', 'job_type', 'apply__date_created','user__address’) user__address 表示查找父表user的address字段数据,通过子表查找父表就是正向查找,表示方法为: 外键字段名+双下划线+主表字段名 后台的SQL: SELECT `job`.`id`,`job`.`job_type`, `apply`.`date_created`,user.address FROM `job` inner JOIN `apply` ON (`job`.`id` = `apply`.`position_id` ) inner JOINuser on job.user=user.id where apply.name=’zhang’ 4.如果子表apply的foreignkey定义的时候指定了related_name='fk_apply_job',那么主表job反向查找子表apply字段数据的语句必须使用related_name替代: job.objects.values( 'id', 'job_type', 'fk_apply_job__date_created')
django orm 关联表查询
原创
©著作权归作者所有:来自51CTO博客作者paniho的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:工作中用到的命令
下一篇:logstash 多行合并
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SQL Server 执行计划3--关联查询
SQL Server执行计划,多表关联查询
Nested Loops Merge Join Hash Match -
hibernate多表关联查询
Hibernate关联查询有多种实现方式 方式一:建立视图像查询表一样查询视图,给视
持久化 hibernate 构造函数 -
android room 多表关联查询 多表关联查询方式
多表联合查询
android room 多表关联查询 MySQL Java 交叉连接 -
MySQL多表关联查询顺序 mysql多表关联查询性能
mysql同张表关联多次查询_MySQL多次单表查询和多表联合查询
MySQL多表关联查询顺序 mysql同张表关联多次查询 数据库 联合查询 单表查询