python - 实际上无法找到 from_db_value 在 django 源代码中的工作原理?

标签 python django django-models

我的模型中有一些字段,我试图在所有字段上应用加密。每个字段加密取决于同一模型类中其他两个字段的值。我能够实现加密数据。 但我还需要同一类中的其他两个字段来解密函数 def from_db_value(self, value, expression, connection, *args) 返回的其他字段值。

我已阅读the docs和源代码,但我在 from_db_value(self, value, expression, connection, *args) 中没有看到对以下参数的正确解释:

  1. 表达式
  2. *args

我想知道我们如何以及在哪里提供这些参数。我们还可以如何使用该功能。我知道该函数应该返回数据库中的值,并将其转换为适当的 python 对象。但我想知道它还能做什么或者我们可以用它做什么?

P.S:是的,我正在尝试制作自定义字段类。 灵感:django-fernet-fields

最佳答案

我不知道你想在兔子洞里走多远,但这也许有帮助。您可能已经发现 from_db_valuedjango.db.models.fields.__init__.py 第 708 行的 Field 类中使用。此处作为一种 Hook 特定数据库模型的值转换的方法。例如,它用于转换为 native PostGreSQL 数组字段。

如果您深入挖掘,您会发现这些转换器由 django.db.models.sql.compiler.py 第 1084 行中的 SQLCompiler 类使用。依次由其下面的 results_iter 调用。

我注意到how-to guide没有提到在方法定义中使用和 *args 参数。所以我不知道它是从哪里来的。

关于python - 实际上无法找到 from_db_value 在 django 源代码中的工作原理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60560775/

相关文章:

javascript - 如何将 Django 上下文变量传递到 JavaScript 函数中?

python - 如何在 Django 查询集中使用条件注释 Count

python - Django 唯一的、空的和空白的 CharField 在管理页面上给出 'already exists' 错误

python - 使用 databricks 集群执行 azure 存储上存在的 python 代码

python - 重新路由 Django 的 "handle_uncaught_exception"

mysql - Django:由于没有 admin.py 而遇到麻烦

python - Django 模型 (1054, "Unknown column in ' 字段列表'")

python - 我如何有效地将 2d python 列表提供给 C++ 扩展模块

python - 计算距图像中心的像素距离

.net - 语法高亮 : rich text box control for . NET