Django:'Model'子类继承

时间:2015-01-07 12:01:32

标签: python django django-models

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

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

models.Model

位于Model目录中的models类在哪里?我认为这是一个非常基本的问题,所以请原谅我的无知。

2 个答案:

答案 0 :(得分:2)

Model类本身位于django.db.models.base。如果查看source codemodels模块实际上只是一个文件夹,而不是models.py文件。但是,Model类以及包中其他常用类会导入__init__.py,因此可用django.db.models.<class>

答案 1 :(得分:1)

使用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模块的课程。

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