【问题标题】: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。谢谢

标签: sql django django-models model


【解决方案1】:

如果您有 Django 1.2+,您可以使用 raw() 方法使用自定义查询的结果返回 Model 实例列表。在你的情况下是这样的:

query = "<your query goes here>"
Object.objects.raw(query)

【讨论】:

  • 太棒了。我刚刚切换到 1.2,一定是在发行说明中错过了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2017-10-25
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2018-09-02
  • 2011-04-06
相关资源
最近更新 更多