我最近决定学习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
类在哪里?我认为这是一个非常基本的问题,所以请原谅我的无知。
答案 0 :(得分:2)
Model
类本身位于django.db.models.base
。如果查看source code,models
模块实际上只是一个文件夹,而不是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)