从自定义查询返回模型而不访问数据库
Posted
技术标签:
【中文标题】从自定义查询返回模型而不访问数据库【英文标题】:Return a model from a custom query without hitting the database 【发布时间】:2011-04-08 17:14:41 【问题描述】:我有一个自定义查询,它最终返回一个对象列表。我需要该函数来返回实际对象,但我不想为每个查询两次访问数据库,因为它已经是一个昂贵的查询。如何在不访问数据库的情况下返回模型实例?
注意:我认为执行以下操作实际上会创建不同模型的新实例?
return [Object(pk=row[0]) for row in results]
注意:我还假设这会在函数返回时访问数据库
return [Object.objects.get(pk=row[0]) for row in results]
【问题讨论】:
为什么不能返回查询集? @lazerscience:我猜测他发现 SQL 太复杂/无法使用 Django API 复制。 @lazerscience:是的,正如 Manoj 所说,使用 django ORM 无法完成 SQL。谢谢 【参考方案1】:如果您有 Django 1.2+,您可以使用 raw()
方法使用自定义查询的结果返回 Model
实例列表。在你的情况下是这样的:
query = "<your query goes here>"
Object.objects.raw(query)
【讨论】:
太棒了。我刚刚切换到 1.2,一定是在发行说明中错过了!以上是关于从自定义查询返回模型而不访问数据库的主要内容,如果未能解决你的问题,请参考以下文章