我有一个自定义查询,最终返回一个对象列表。我需要函数来返回实际的对象,但我不想为每个查询打两次数据库,因为它已经是一个昂贵的查询。如何在不敲击db的情况下返回模型实例?
注意:我认为做类似以下的事情实际上会创建一个不同模型的新实例?
return [Object(pk=row[0]) for row in results]
注意:我还假设这会在函数返回时命中数据库
return [Object.objects.get(pk=row[0]) for row in results]
答案 0 :(得分:2)
如果你有Django 1.2+,你可以使用raw()
方法使用自定义查询的结果返回Model
个实例的列表。在你的情况下这样的事情:
query = "<your query goes here>"
Object.objects.raw(query)