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)
我最近决定学习 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)