执行Django模型查询



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

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

每个 non-abstract django模型类都有一个属性 objects 已附加到其上(除非您当然明确删除它)。<<<<<<<<<<<<

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

因此,您首先访问Blog类的objects经理,接下来您在其上调用.get(name='palm')。这意味着Django将其转化为查询。这取决于您使用的数据库系统。例如,如果是mysql,它看起来像:

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

数据库将以零,一个或多个行响应,而Django将发现或多超过一行,请提高DoesNotExistsMultipleObjectsReturned错误。否则,它将将数据加载到Blog对象中(通过将列对python对象进行应对)。

最新更新