Django 如何一次查询 3 张表?

2019-05-13 09:21:29 +08:00
 KevinBu

3 张表里的字段名一致

我在 Googld 搜索的结果都是查询 2 张表的

请问如何一次查多张表呢?

2980 次点击
所在节点    Python
8 条回复
NaVient
2019-05-13 09:27:54 +08:00
join 操作?没有外键请直接用 raw 写 sql
awanabe
2019-05-13 10:22:21 +08:00
flask 里面可以多个 outerjoin 串联 实现多表查询
gjquoiai
2019-05-13 11:07:43 +08:00
emm union ?
wd
2019-05-13 12:40:05 +08:00
django 里面你应该是通过 model 的关系来查询,如果你真想一次查,那就只能写 join
freakxx
2019-05-13 14:23:33 +08:00
第一种办法
1 分别查询
2 用 chains 连接起来
3 如果是 drf,建个自定义 serializer 序列化

------

第二种
重新抽象 model,
看业务需求用 proxy 模式或者直接用字段表示不同的类型,再分别 filter 出去
anshengme
2019-05-13 18:17:17 +08:00
KevinBu
2019-05-14 09:42:53 +08:00
多谢各位,现在用 union 解决了这个问题,官方文档里也有介绍

union (* other_qs,all = False )
使用 SQL 的 UNION 运算符来组合两个或多个 QuerySets 的结果 。例如:
>>> qs1.union(qs2, qs3)

https://docs.djangoproject.com/en/1.11/ref/models/querysets/#django.db.models.query.QuerySet.union
zibber
2019-05-14 16:58:24 +08:00
关联查询 套两层

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/563500

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX