Python 如果这是个愚蠢的问题,请原谅我。在Django中order_by()实际上是什么?

Python 如果这是个愚蠢的问题,请原谅我。在Django中order_by()实际上是什么?,python,django,Python,Django,我读了文档,他们说order_by()返回一个新的查询集。但当我打印Question.objects.order_by('-pub_date'),其中Question是models.py中的类名时,它会打印queryset对象。我很困惑order_by()是否实际返回一个新的查询集或实际执行一个查询? 请在下面的代码中解释在Django中执行期间内部发生了什么 from django.http import HttpResponse from .models import Questio

我读了文档,他们说order_by()返回一个新的查询集。但当我打印Question.objects.order_by('-pub_date'),其中Question是models.py中的类名时,它会打印queryset对象。我很困惑order_by()是否实际返回一个新的查询集或实际执行一个查询? 请在下面的代码中解释在Django中执行期间内部发生了什么

  from django.http import HttpResponse
  from .models import Question
  def index(request): 
   latest_question_list = Question.objects.order_by('-pub_date')[:5]
   output = ', '.join([q.question_text for q in latest_question_list])
   return HttpResponse(output)

另外,请解释上面代码中的第5行?

Django查询是延迟执行的,因此在您尝试获取结果之前它不会执行查询,因此它会说它返回一个查询集。当您在第5行的列表理解中对结果进行迭代时,您试图获得结果


第5行只是一个连接字符串操作中使用的列表理解

您可以按照问题最新发布的日期对问题进行排序。它同时执行这两个操作,即隐式的
all
,因为您不包括任何其他查询。但代码中的第5行呢。你们能详细解释一下吗?那个么告诉我什么时候执行查询?第5行当你们引用
最新的问题列表时,
这意味着只返回一个查询而不执行查询。但当我在第5行之前打印最新的问题列表时,它也会显示关于表的结果。这意味着在我们使用之前查询不会执行最新的问题清单。这是真的吗?