2012-04-14 14 views
6

私は最初のいくつかのDjangoモデルを書いており、すべてのモデルが拡張された基底クラスを見たいと思っていました(例: "Class Poll(models.Model"))。 django.db.modelsディレクトリを閲覧すると、私が見ることができる "Model.py"ファイルが見つからないことに驚きました。このファイルは生成されていますか、クラスモデルは別の場所にあるのですか?私はhttps://github.com/django/django/blob/master/django/db/models/__init__.pyDjangoソースコードのModel.pyはどこにありますか?

見た目では?

答えて

5

以前に述べたように、PythonはJavaではありません。特に、Pythonには、クラスがクラスと同じ名前のファイルに存在しなければならないということは何もありません。

San4ezが指摘するように、Modelクラスがdjango.db.models.baseに住んでいる、そしてそれはmodels.Modelとして直接参照することができるように、そのディレクトリ内のファイル__init__.pyにインポートされます。これはまったくの魔法ではなく、普通の慣用のPythonです。

しかし、一度クラス自体のコードを調べると、実際には多くのPythonの魔法が、特にメタクラスの周りに構成されていることがわかります。しかしそれは別の質問です。

+0

私はあなたの助けを借りてそれを見つけました(github検索のせいではありません)。これは私に、Python規約/スタイル/ルールに関するいくつかのむしろ哲学的な質問につながりますが、それは別の投稿の質問です(そして少しの背景研究もされたあと)。ありがとう! –

2

に精通していないよということ

from django.db.models.base import Model 

のでModelクラスは文字通り、あなたがこのよう​​プロジェクトにモデルをインポートすることができますがhttps://github.com/django/django/blob/master/django/db/models/base.py

に記載されています。しかし、Djangoのコア開発者は、いくつかのサービスクラスを隠すことに決め、django.db.modelsパッケージにいくつかインポートし、より短いインポートを使用するようにしました。

関連する問題