【问题标题】:Annotating a QuerySet with joined tables in Django在 Django 中使用连接表注释 QuerySet
【发布时间】:2016-01-07 14:19:34
【问题描述】:

如何在不使用原始 SQL 的情况下使用来自自定义连接表达式的数据来注释 Django QuerySet?

我想为 Django ORM 翻译以下查询,而不必使用 this question

SELECT a.*, b.name as b_name
FROM a
JOIN b ON ST_Within(ST_Centroid(a.geom), b.geom)

据我所知,执行此类操作的最佳候选者是 annotate(...) 函数,但文档没有任何关于如何将连接表添加到带注释的 QuerySet 的内容。

我的另一个想法是使用类似于ManyToManyField(可能是它的子类)的东西,它可以为其连接模型使用自定义ON ... 表达式。

还有什么想法吗?

【问题讨论】:

    标签: django join annotate


    【解决方案1】:

    SQLAlchemy 可能是更好的选择:

    https://github.com/Deepwalker/aldjemy

    用于将 SQLAlchemy 集成到现有 Django 项目中的小包。这个包的主要用例是构建 Django ORM 无法实现的复杂查询。

    https://github.com/johnpaulett/django-sabridge

    Django 的模型和 SQLAlchemy 的表之间的桥梁。

    【讨论】:

    • 这就是我所担心的。现在我在这个特定的查询中使用了raw,但我真的很想要一个 Django 解决方案。 SA 是一个非常不错的库,但是在代码库中添加多种访问数据库的方式似乎并不是一件好事……
    猜你喜欢
    • 2011-04-18
    • 2016-09-07
    • 2017-10-02
    • 2018-12-30
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多