首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

Django 如何一次查询 3 张表?

  •  
  •   KevinBu · 42 天前 · 1650 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    3 张表里的字段名一致

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

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

    8 回复  |  直到 2019-05-14 16:58:24 +08:00
        1
    NaVient   42 天前
    join 操作?没有外键请直接用 raw 写 sql
        2
    awanabe   42 天前
    flask 里面可以多个 outerjoin 串联 实现多表查询
        3
    gjquoiai   42 天前   ♥ 1
    emm union ?
        4
    wd   42 天前 via iPhone
    django 里面你应该是通过 model 的关系来查询,如果你真想一次查,那就只能写 join
        5
    freakxx   42 天前
    第一种办法
    1 分别查询
    2 用 chains 连接起来
    3 如果是 drf,建个自定义 serializer 序列化

    ------

    第二种
    重新抽象 model,
    看业务需求用 proxy 模式或者直接用字段表示不同的类型,再分别 filter 出去
        7
    KevinBu   41 天前
    多谢各位,现在用 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
        8
    zibber   41 天前
    关联查询 套两层
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   867 人在线   最高记录 5043   ·   Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 21:51 · PVG 05:51 · LAX 14:51 · JFK 17:51
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1