Django数据库多表连接查询

Django数据库多表连接查询

时间:2017-02-13 作者:zhankehua 评论:0 点击:2730 次

最近在学习python,为了尽快掌握python,我特意将PHP写的NESSUS漏洞扫描报告统计系统改写成python语言。在使用django进行多表连接查询中,费了不少力气,网上的资料没有满足我的需求。现将自己的学习情况记录下来。

需求一:如何将主表的某个字段与从表的非主键建立外键关系?

为了这个需求,我花了近2天的时间在网上也没找到。无意间在django官方文档中发现这样一个关键字to_field

image.png

依据此说明,我在models中这样定义,测试通过

image.png


上面定义的外键是从表Vulnerabilities中的pluginID字段,依据文档说明,pluginID字段必须是unique=true,那就按文档要求做吧。

image.png

从表的主键作为主表的外键,在这里就不记录了,网上太多了。

需求二:如何进行动态条件查询?

网开始时写的时候,我是把每种条件都写上一遍,代码重多边,实际上只需要使用"**arg"这样的参数。具体写法如下:

image.png


需求三:如何返回指定的字段?

只需要在values中指定列名,参照上图的values(*fields)

需求四:如何对列名重命名?我们在连接查询时,想将从表的某个字段在查询结果中返回,这时使用“外键名称__从表字段名",愿意是返回的结果中字段名为从表中的名字,但实际上是外键名称__从表字段名,这时需要进行重命我。我是这样做的,使用关键字annotate.参见上图。

下图是较全的说明,

image.png


滴水成河,聚少成丘,继续努力...

已有 2730 位网友参与,快来吐槽:

发表评论

必填

选填

选填

◎欢迎参与讨论,发表您的看法、交流您的观点。