Django ORM - 使用 .get 或索引 QuerySet 的模型对象

Django ORM - a model object from using .get or indexing a QuerySet

my_model = MyModel.objects.get(pk=5)

所以 'my_model' 不是查询集对象,如果我从查询集中索引它也不是。除了是 table(s) 中的对象列表之外,QuerySet 有什么特别之处吗?

另外我想知道,我知道简单地创建一个 QuerySet 并不涉及数据库查找,但是像 'my_model' 那样只获取一个对象呢?

从最基本的意义上说,查询集是 "list of objects",但它也有相当多的普通列表不可用的方法。

https://docs.djangoproject.com/en/2.0/ref/models/querysets/

例如,您可以进一步过滤查询集以生成另一个查询集。您可以查看由queryset生成的SQL,您可以从queryset中获取聚合。

I know that simply creating a QuerySet does not involve a database lookup

查询集是延迟计算的。这意味着他们不会在需要时访问数据库。所以在你的例子中 "getting one just model" 需要从数据库中获取信息。

其他会导致查询实际查找数据库的东西将是任何实际需要存储在数据库中的信息的东西 - 所以遍历查询集,在模板中呈现一个值,调用列表(my_queryset) 或 count() 方法。 link 我发布的解释这个的顶部有一个部分。