Django查询查询集性能

时间:2012-07-25 13:30:43

标签: django

我有一个模型,我正在进行查询:

my_objects = Model.objects.filter(user = request.user)

现在我正在做my_objects:

obj = my_objects.get(user = x )

我试图了解my_objects上的 .get 是否会对数据库生成另一个查询,并且仅对过滤器输出有效?或者它将生成另一个查询。

1 个答案:

答案 0 :(得分:1)

如果Model不是用户实例,它将再次命中数据库,因为在这种情况下用户是一个相关对象,如果你不想再次点击数据库,请使用select_related()并自己过滤{{1} }:

  

“将自动”跟随“外键关系,选择它   执行查询时的其他相关对象数据“

obj

在此处查看更多信息: https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related

修改 我忘了提到django中的QuerySet是懒惰的,实际上在评估查询集之前不会命中db,这些是强制评估查询集的方法: methods