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

Python Django源代码中Model.py在哪里?,python,django,django-models,Python,Django,Django Models,我一直在写我的前几个Django模型,想看看所有模型扩展的基类(例如:“class Poll(models.Model)),但找不到模型基类。我检查了,当我浏览目录时,我惊讶地发现没有找到“Model.py”我可以查看的文件。这个文件是生成的吗?或者类模型是否存在于其他地方?或者是否存在一些我不熟悉的python包魔法?在https://github.com/django/django/blob/master/django/db/models/__init__.py 看 所以这里描述了模型类ht

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

https://github.com/django/django/blob/master/django/db/models/__init__.py

所以这里描述了
模型
https://github.com/django/django/blob/master/django/db/models/base.py


实际上,您可以通过这种方式将模型从django.db.models.base导入模型导入到您的项目中。但是django核心开发人员决定隐藏一些服务类,将一些导入到django.db.models包中,并允许您使用更短的导入。正如前面所述,Python不是Java。特别是,没有Python中的一个例子,它表示类必须位于与类同名的文件中

正如San4ez指出的,
Model
类存在于
django.db.models.base
中,并被导入到该目录中的
\uuuu init\uuuuuuu.py
文件中,以便它可以作为
models.Model
直接引用。这不是什么魔法,只是普通的惯用Python

然而,一旦你查看了类本身的代码,你会发现它实际上包含了相当多的Python魔法,特别是元类。但这是一个不同的问题。

我在你的帮助下找到了它(不感谢github搜索)。这就引出了一些关于python约定/风格/规则的哲学问题,不过这是另一篇文章的问题(在做了一些背景研究之后)。谢谢!
from django.db.models.base import Model