10

使用 python manage.py shell 在您的 django 项目根目录上打开一个 python shell 并观察以下内容:

>>> 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

那么为什么它们在导入时不是“类型”类型的呢?Django 是否通过一些黑魔法改变了模型类的类型,或者我只是错过了一些明显的东西?

4

0 回答 0