Django 1.8 什么时候调用 from_db_value?
When is from_db_value called in Django 1.8?
在 Django 1.8 发行说明中,它提到 Django Fields 不再使用 SubfieldBase
,并且已将 to_python
赋值调用替换为 from_db_value
。
文档还指出,只要从数据库加载数据,就会调用 from_db_value
。
我的问题是,如果我直接 read/write 数据库(即使用 cursor.execute()),是否会调用 from_db_value
?我最初的尝试和直觉说不,但我只是想确定一下。
参见 The Django Documentation for Executing custom SQL directly。
Sometimes even Manager.raw()
isn’t quite enough: you might need to perform queries that don’t map cleanly to models, or directly execute UPDATE, INSERT, or DELETE queries.
In these cases, you can always access the database directly, routing around the model layer entirely.
以上说明使用 cursor.execute()
将完全绕过模型逻辑,returning 原始行结果。
如果要执行原始查询和 return 模型对象,请参阅 the Django Documentation on Performing raw queries。
The raw() manager method can be used to perform raw SQL queries that return model instances:
for p in Person.objects.raw('SELECT * FROM myapp_person'):
print(p)
>>> John Smith
>>> Jane Jones
在 Django 1.8 发行说明中,它提到 Django Fields 不再使用 SubfieldBase
,并且已将 to_python
赋值调用替换为 from_db_value
。
文档还指出,只要从数据库加载数据,就会调用 from_db_value
。
我的问题是,如果我直接 read/write 数据库(即使用 cursor.execute()),是否会调用 from_db_value
?我最初的尝试和直觉说不,但我只是想确定一下。
参见 The Django Documentation for Executing custom SQL directly。
Sometimes even
Manager.raw()
isn’t quite enough: you might need to perform queries that don’t map cleanly to models, or directly execute UPDATE, INSERT, or DELETE queries.In these cases, you can always access the database directly, routing around the model layer entirely.
以上说明使用 cursor.execute()
将完全绕过模型逻辑,returning 原始行结果。
如果要执行原始查询和 return 模型对象,请参阅 the Django Documentation on Performing raw queries。
The raw() manager method can be used to perform raw SQL queries that return model instances:
for p in Person.objects.raw('SELECT * FROM myapp_person'):
print(p)
>>> John Smith
>>> Jane Jones