执行django模型查询?

问题描述 投票:0回答:1

在django模型查询中,我想知道它的顺序执行。考虑一个查询Blog.objects.get(name='palm')。在定义Blog的地方,与models.py中的类blog相同吗?什么是对象我在django的源文件中找不到与此相关的任何内容。如果Blog是一个类,那么objects的类型是什么?

我想要一个发展方面的概念。任何人都可以解释一下django如何使这些成为可能吗?

python django django-models
1个回答
2
投票

每个非抽象的Django模型类都附加了一个属性objects(除非你当然明确删除它)。

object是一个Manager。它是一个对象,有很多方法来构造查询,然后发送到数据库以获取/存储数据。

所以你首先访问objects类的Blog经理,接下来你打电话给.get(name='palm')。这意味着Django会将其转换为查询。这取决于您使用的数据库系统。例如,如果它是MySQL,它将看起来像:

SELECT name, some, other columns
FROM app_blog
WHERE name = 'palm'

数据库将以零,一行或多行响应,如果没有找到或多行,Django会引发DoesNotExistsMultipleObjectsReturned错误。否则,它会将数据加载到Blog对象中(通过将列反序列化为Python对象)。

© www.soinside.com 2019 - 2024. All rights reserved.