如果查询集未命中数据库,它将如何知道数据库中有哪些记录

时间:2019-05-29 17:59:45

标签: django database django-queryset

Django查询集很懒

person_set = Person.objects.all()

在文档中,上面的代码没有运行任何数据库查询。 但是使用上述命令,它会在这种情况下生成一个查询集person_set,并且该对象包含所有person对象。

 person_set = Person.objects.all()

 print(person_set)

这是输出。

 <QuerySet [<Person: Person object (7)>, <Person: Person object (8)>, <Person: Person object (9)>]>

如果它没有命中数据库,那么它怎么知道数据库中有什么记录?因为应该只在使用循环或其他方法对它求值时才运行查询。

2 个答案:

答案 0 :(得分:0)

打印查询集正在对其进行评估,以建立对象的字符串表示形式。

答案 1 :(得分:0)

您可以在此处查看所有QuerySet命中数据库的情况:https://docs.djangoproject.com/en/2.2/ref/models/querysets/#when-querysets-are-evaluated

其中之一是repr(),当您打印查询集时会调用它。

相关问题