python - 用django自己加入postgresql

标签 python django postgresql django-queryset django-1.4

首先,Django 添加了不必要的引号,导致 PostgreSQL 语法错误:

Model.objects.extra(tables=['(SELECT ... FROM model) AS "model_alias"'],
                    where=...)

产生

SELECT ... FROM "model" , "(SELECT ...) AS "model_alias"" WHERE ...

--语法错误,其中

SELECT ... FROM "model" , (SELECT ...) AS "model_alias" WHERE ...

没问题。

其次,它忽略了extra方法的tables参数中表名的额外出现,而the documentation应创建别名的 promise :

Model.objects.extra(tables=['model'], where=...)

只生成 SELECT ... FROM "model"WHERE ... -- 没有别名。

错在哪里? 如何克服 Django 的这种行为?

最佳答案

您可能需要使用原始 SQL 来执行此操作。参见 Performing raw SQL queries .它可能看起来像这样:

Model.objects.raw("""
    SELECT * FROM 'model' JOIN 'model_alias' ON (...) 
    WHERE (...)
""")

关于python - 用django自己加入postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617197/

相关文章:

sql - 查询 sql "event log"架构

python - 层次填充二叉树

Python Pandas : How can I count the number of times a value appears in a column based upon another column?

python - 用 Numpy 解释 Matlab 索引/切片

python - 动态 html 使用 django 应用程序中 JSON 链接的数据选择下拉列表

Django 多对多限制

node.js - 从 React Native -> ROS -> Postgres 同步到(postgres Node 适配器)的段错误

python - 在 Pandas Dataframe 中组合日期范围

javascript - 获取 API 数据、呈现数据以及一般使用它的更好方法是什么

node.js - 如何在 TypeOrm 中表示 View ?