Django查询查询集性能

Django查询查询集性能,django,Django,我有一个模型,我正在做一个查询: my_objects = Model.objects.filter(user = request.user) 现在,在我的_对象上,我正在做: obj = my_objects.get(user = x ) 我试图了解my.getover my_对象是否不会生成对数据库的另一个查询,而只会处理过滤器输出?或者它将生成另一个查询。如果Model不是用户实例,它将再次命中数据库,因为在这种情况下,用户是一个相关对象,如果您不想再次命中数据库,请使用select_

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

my_objects = Model.objects.filter(user = request.user)
现在,在我的_对象上,我正在做:

obj = my_objects.get(user = x )

我试图了解my.getover my_对象是否不会生成对数据库的另一个查询,而只会处理过滤器输出?或者它将生成另一个查询。

如果
Model
不是用户实例,它将再次命中数据库,因为在这种情况下,用户是一个相关对象,如果您不想再次命中数据库,请使用select_related()并自行筛选
obj

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

请参见此处的更多信息:

编辑: 我忘了提到django中的QuerySet是懒惰的,实际上在计算QuerySet之前不要点击db,以下是强制计算QuerySet的方法:

如果我的第一个.filter是(user=request.user),而我的第二个.get是在不同的非相关对象上,会发生什么情况?它会再次命中数据库吗?是的,您正在创建另一个查询集,最好是您自己筛选对象new_obj=[obj for obj in my_objects if obj.some_value==“some_value”]这比让django ORM为您筛选对象要好。请参见我的编辑,但您可以嵌套过滤器,例如queryset.filter().filter()。
my_objects = Model.objects.select_related().filter(user = request.user)