Django源代码中的Model.py在哪里?

时间:2012-04-14 14:02:47

标签: python django django-models

我一直在编写我的前几个Django模型,并想看看所有模型扩展的基类(例如:“类Poll(models.Model”)但找不到Model基类。我检查了source on github当我浏览django.db.models目录时,我很惊讶找不到我能看到的“Model.py”文件。这个文件生成了吗?或者类Model是否存在于其他地方?或者是否有一些我不熟悉的python包魔法?

2 个答案:

答案 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包并提供你使用更短的导入。