1

在 Django 1.8 发行说明中,它提到 Django Fields 不再使用SubfieldBase,并且已将to_python调用赋值替换为from_db_value.

文档还指出,from_db_value每当从数据库加载数据时都会调用它。

我的问题是,from_db_value如果我直接读/写数据库(即使用 cursor.execute()),是否会调用?我最初的尝试和直觉说不,但我只是想确定一下。

4

1 回答 1

2

请参阅直接执行自定义 SQL 的 Django 文档

有时甚至Manager.raw()还不够:您可能需要执行不完全映射到模型的查询,或者直接执行 UPDATE、INSERT 或 DELETE 查询。

在这些情况下,您始终可以直接访问数据库,完全围绕模型层进行路由。

上面指出 usingcursor.execute()将完全绕过模型逻辑,返回原始行结果。

如果您想执行原始查询并返回模型对象,请参阅有关执行原始查询的 Django 文档

raw() 管理器方法可用于执行返回模型实例的原始 SQL 查询:

for p in Person.objects.raw('SELECT * FROM myapp_person'):
    print(p)

>>> John Smith
>>> Jane Jones
于 2015-05-08T17:42:47.410 回答