我的问题和标题是一样的;
为什么Django创建者将模型和queryset分开?
在编写Django代码时,我总是觉得两者所扮演的角色非常相似,因为它们都是用于数据库管理的。另外,模型本身没有实际数据,但将它们传递给queryset,这让人感到有点尴尬,尽管它是python和数据库之间的接口。
为什么Django创建者或合作者将相同的角色划分为这两个角色,有什么原因吗?
发布于 2019-01-21 10:33:41
在面向对象的意义上,它们是完全不同的两件事:
Model实例是一个对象,它可以表示您希望它表示的任何东西,比如汽车、地址或个人,它的一些属性存储在数据库中(它可以包括甚至不来自数据库的属性)。QuerySet是一个延迟的数据库查询,可以返回一个或多个数据库行。在计算QuerySet时,您实际上实例化模型并使用数据填充它们。请注意,在MVC术语中,Django模型正是MVC的模型。您还可以拥有自己的模型,这些模型甚至不是django.db.models.Model的子类,例如,如果您从API中获取数据,或者一个只存在于当前会话中且不永久存储在数据库中的模型。
https://stackoverflow.com/questions/54287648
复制相似问题