python manage.py シェルを使用して django プロジェクト ルートで python シェルを開き、次のことを確認します。
>>> class A(object): pass #checking type of user-defined class
...
>>> type(A)
<type 'type'>
>>> class B(A): pass #checking type of child class
>>> type(B)
<type 'type'>
>>> from collections import OrderedDict #checking type of imported class
>>> type(OrderedDict)
<type 'type'>
これを見てください:
>>> from my_project.models import MyModel
>>> type(MyModel)
<class 'django.db.models.base.ModelClass'>
誰かがここで何が起こっているのか説明できますか? Django モデルは、models.py のクラスとして明確に定義されています。
class MyModel(models.Model):
pass
では、なぜインポート時に「type」ではないのでしょうか? Django は黒魔術によってモデル クラス タイプを変更しますか?