Django: 'Model' 子类继承

Django: 'Model' subclass inheritance

我最近决定学习 Django 框架,并开始阅读官方 Django 教程。官方教程给出的创建模型代码如下:

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

现在,代码非常简单。但是,我很难理解正在定义的每个 class 模型中继承的 'Model' subclass 的层次结构:

models.Model

Model class 位于 models 目录中的什么位置?我假设这是一个非常基本的问题,所以请原谅我的无知。

Model class 本身位于 django.db.models.base。如果您查看 source code, the models module is actually just a folder, not a models.py file. However, the Model class, among other commonly used classes in the package are imported in __init__.py,因此可获得 django.db.models.<class>

使用 python manage.py shell

项目目录$python manage.py shell

项目目录 - manage.py 模块所在的位置。

1) models 是 python 模块而不是目录或包。

>>> from django.db import models
>>> models
<module 'django.db.models' from '/usr/lib/python2.6/site-packages/django/db/models/__init__.pyc'>

2) Model 是来自 django.db.models.base 模块的 class。

>>> help(models.Model)


Help on class Model in module django.db.models.base:

class Model(__builtin__.object)
 |  Methods defined here:
 |  
 |  __eq__(self, other)
 |  
 |  __hash__(self)
 |  
 |  __init__(self, *args, **kwargs)
 |  
 |  __ne__(self, other)