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



我一直在编写我的前几个 Django 模型,并想看看所有模型扩展的基类(例如:"类 Poll(models.模型"),但找不到模型基类。我在github上检查了源代码,当我浏览到django.db.models目录时,我很惊讶找不到我可以查看的"Model.py"文件。此文件是否生成?还是班级模型住在其他地方?还是有一些我不熟悉的 python 包魔法?

如前所述,Python不是Java。特别是,Python 中没有说类必须存在于与类同名的文件中。

正如San4ez所指出的,Model类存在于django.db.models.base中,并被导入到该目录中的__init__.py文件中,以便可以直接将其引用为models.Model。这不是任何一种魔法,只是普通的习惯性Python。

但是,一旦您查看了类本身的代码,您会发现它实际上确实包含了很多 Python 魔法,特别是围绕元类。但这是一个不同的问题。

In 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并为您提供使用较短的导入。

最新更新