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)>]>
如果它没有命中数据库,那么它怎么知道数据库中有什么记录?因为应该只在使用循环或其他方法对它求值时才运行查询。
答案 0 :(得分:0)
打印查询集正在对其进行评估,以建立对象的字符串表示形式。
答案 1 :(得分:0)
您可以在此处查看所有QuerySet命中数据库的情况:https://docs.djangoproject.com/en/2.2/ref/models/querysets/#when-querysets-are-evaluated
其中之一是repr()
,当您打印查询集时会调用它。