原文:https://tutorial.djangogirls.org/zh/django_models/
创建应用程序
python manage.py startapp blog
你会注意到一个新的blog目录被创建,它现在包含一些文件。我们的目录和我们的项目中的文件现在应该看起来像这样:
djangogirls├── mysite| __init__.py| settings.py| urls.py| wsgi.py├── manage.py└── blog├── migrations| __init__.py├── __init__.py├── admin.py├── models.py├── tests.py└── views.py
创建应用程序后,我们还需要告诉 Django 它应该使用它。 我们是在mysite/settings.py文件中这样做的。 我们需要找到INSTALLED_APPS并在它下面添加一行'blog',。 所以最终的代码应如下所示:

创建一个博客文章模型
我们在blog/models.py文件中,定义所有的Models对象— — 我们将在其中都定义我们的博客文章。
让我们打开blog/models.py,从中删除一切并编写这样的代码:
from django.db import modelsfrom django.utils import timezoneclass Post(models.Model):author = models.ForeignKey('auth.User')title = models.CharField(max_length=200)text = models.TextField()created_date = models.DateTimeField(default=timezone.now)published_date = models.DateTimeField(blank=True, null=True)def publish(self):self.published_date = timezone.now()self.save()def __str__(self):return self.title
所有以from或import开始的所有行,都是需要从其他文件中添加一些内容。 所以与其复制和粘贴同样的内容,我们可以用from...... import......来导入这些文件.class Post(models.Model):- 这行是用来定义我们的模型 (这是一个对象).
class是一个特殊的关键字,表明我们在定义一个对象。Post是我们模型的一个名字。我们可以给它取另外一个不同的名字(但是我们必须避免使用特殊字符或者空格符)。总是以首字面大写来作为类名。models.Model表明Post是一个Django模型,所以Django知道它应该被保存在数据库中。
现在我们定义了我们曾经提及到的那些属性:title,text,created_date,published_date和author。 为了做到那样我们需要为我们每个字段定义一个类型(它是文本吗? 是数字? 是日期? 到另一个对象的关联,比如用户吗?)。
models.CharField- 这是你如何用为数有限的字符来定义一个文本。models.TextField- 这是没有长度限制的长文本。这听起来用在博客文章的内容上挺适合的,对吧?models.DateTimeField- 这是日期和时间。models.ForeignKey- 这是指向另一个模型的连接。
Django的官方文档 https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-typesdef publish(self): def 表明这是一个函数或者方法,publish是这个方法的名字。
方法通常会return一些东西。 例如在__str__方法中就有这个。 在这种情况下,当我们调用__str__()我们将得到文章标题的文本 (字符串)。
如果关于模型尚有不清楚的,请随时问你的教练 ! 我们知道它很复杂,特别是当你同时学习对象和函数的时候。 但希望它在你看来没有那么神奇!
这里的self 不是很懂,http://python.jobbole.com/81921/
在你的数据库中为模型创建数据表
在这里的最后一步是将我们新的模型添加到我们的数据库。 首先我们必须让Django知道我们在我们的模型(我们刚刚创建的!) 有一些变更。 输入python manage.py makemigrations blog。 它看起来会像这样:

Django为我们准备了我们必须应用到我们数据库的迁移文件。
输入python manage.py migrate blog,然后对应的输出应该是:

