我一直在编写我的前几个Django模型,并想看看所有模型扩展的基类(例如:“类Poll(models.Model”)但找不到Model基类。我检查了source on github当我浏览django.db.models目录时,我很惊讶找不到我能看到的“Model.py”文件。这个文件生成了吗?或者类Model是否存在于其他地方?或者是否有一些我不熟悉的python包魔法?
答案 0 :(得分:6)
如前所述,Python不是Java。特别是,Python中没有任何内容表明类必须存在于与类同名的文件中。
正如San4ez指出的那样,Model
类存在于django.db.models.base
中,并被导入到该目录中的__init__.py
文件中,以便可以直接引用为models.Model
。这不是任何一种魔法,只是普通的惯用Python。
但是,一旦你查看了类本身的代码,你会发现它确实包含了很多Python魔法,特别是围绕元类。但这是一个不同的问题。
答案 1 :(得分:3)
在https://github.com/django/django/blob/master/django/db/models/__init__.py
外观
from django.db.models.base import Model
因此在Model
https://github.com/django/django/blob/master/django/db/models/base.py
类
从字面上看,您可以通过这种方式from django.db.models.base import Model
将模型导入您的项目。但是django核心开发人员决定隐藏一些服务类,将一些服务类导入django.db.models
包并提供你使用更短的导入。