在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将发现或多超过一行,请提高DoesNotExists
或MultipleObjectsReturned
错误。否则,它将将数据加载到Blog
对象中(通过将列对python对象进行应对)。