问题标签 [django-4.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
10 浏览

django-4.0 - 在 django 中对多个表执行连接的聚合函数

我对 django 非常陌生,并且一直在尝试编写一个小应用程序。

我有以下三个模型类

我正在尝试在我的模型类 A 中编写一个方法来聚合其关系 B 中的值,该关系 B 又与模型 C 相关。

我很难编写查询来做一些在普通 SQL 中看起来像下面的事情。

我可以使用单独的查询(如下所示)检索我需要的值,但我确信 django 有更好的方法在单个查询中执行此操作。

0 投票
0 回答
30 浏览

python - Django 4 使用密码文件连接到 Postgresql:“fe_sendauth:未提供密码”

你好 SO & Django 社区,

我的问题与 Django 4 有关,因为此版本中出现了使用 passfile 连接到 Postgres 的功能。尽管我已经解决了有关以前版本的类似错误消息相关问题,但我没有成功解决我的问题。

我想要做什么

我想将 Postgres 数据库 DB_MyProject 连接到 django MyProject。在 Django 4 中,您可以使用密码文件而不是在 settings.py 中提供所有用户/密码信息。有关此新功能的文档在此处这里解释了 Postgres 中密码文件的概念,你也可以在这里阅读连接服务。

在按照我的最佳理解遵循这些文档后,我做了以下工作:

  1. 按照此处的建议,在 Django 项目的 settings.py 中创建了以下 DATABASES 条目:
  1. 在 pg 配置目录 ( pg_config --sysconfdir) 中,使用以下信息创建文件 pg_service.conf,如pg docsdjango docs
  1. 创建了一个 .pgpass 文件,如pg docs

现在,这个 .pgpass 文件存在于多个位置,这是为了使它工作的结果:

  • 在 pg 配置目录 ( pg_config --sysconfdir)
  • 在我的常规用户主目录中 ~/
  • 在 django MyProject 根目录

所有这些文件都是具有相同权限级别的精确副本:

  1. 我还在 PGAdmin 中创建了一个具有指定名称的数据库,并确保用户具有指定密码的权限。

  2. 现在我认为它应该可以正常工作。但是,当我尝试进行迁移或迁移或运行服务器时,我得到了这个:

django.db.utils.OperationalError:在“localhost”(::1)连接到服务器,端口 5432 失败:fe_sendauth:未提供密码

我已经尝试过什么

  • 已验证的兼容性:Django v4.0.3、PostgreSQL v14.0、psycopg2 v2.9.3
  • 创建了一个环境变量 PGPASSFILE,其路径为 ~./.pgpass
  • 将 ~/.pgpass 的所有权从 my_regular_user 更改为 my_postgres_user 以进行测试,得到相同的结果
  • 安装 direnv,在项目根目录下创建 .envrc 文件,包含:

预先感谢您的帮助。我也很乐意指出我的想法中的任何误解,因为我是一名新手开发人员。