在Django 1.8发行说明中,它提到Django Fields不再使用SubfieldBase
,并已使用to_python
替换了from_db_value
号召唤。
文档还声明,只要从数据库加载数据,就会调用from_db_value
。
我的问题是,如果我直接读取/写入db(即使用cursor.execute()),是否调用from_db_value
?我最初的尝试和直觉说不,但我只是想确定。
答案 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