10

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 は黒魔術によってモデル クラス タイプを変更しますか?

4

0 に答える 0