什么时候在Django 1.8中调用from_db_value?

时间:2015-04-21 23:37:50

标签: python django django-1.8

在Django 1.8发行说明中,它提到Django Fields不再使用SubfieldBase,并已使用to_python替换了from_db_value号召唤。

文档还声明,只要从数据库加载数据,就会调用from_db_value

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

1 个答案:

答案 0 :(得分:2)

The Django Documentation for Executing custom SQL directly

  

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

     

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

以上陈述使用cursor.execute()将完全绕过模型逻辑,返回原始行结果。

如果要执行原始查询并返回模型对象,请参阅the Django Documentation on Performing raw queries

  

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

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

>>> John Smith
>>> Jane Jones