原文:https://tutorial.djangogirls.org/zh/django_models/

创建应用程序

  1. python manage.py startapp blog

你会注意到一个新的blog目录被创建,它现在包含一些文件。我们的目录和我们的项目中的文件现在应该看起来像这样:

  1. djangogirls
  2. ├── mysite
  3. | __init__.py
  4. | settings.py
  5. | urls.py
  6. | wsgi.py
  7. ├── manage.py
  8. └── blog
  9. ├── migrations
  10. | __init__.py
  11. ├── __init__.py
  12. ├── admin.py
  13. ├── models.py
  14. ├── tests.py
  15. └── views.py

创建应用程序后,我们还需要告诉 Django 它应该使用它。 我们是在mysite/settings.py文件中这样做的。 我们需要找到INSTALLED_APPS并在它下面添加一行'blog',。 所以最终的代码应如下所示:
20170825150364652911362.png

创建一个博客文章模型

我们在blog/models.py文件中,定义所有的Models对象— — 我们将在其中都定义我们的博客文章。
让我们打开blog/models.py,从中删除一切并编写这样的代码:

  1. from django.db import models
  2. from django.utils import timezone
  3. class Post(models.Model):
  4. author = models.ForeignKey('auth.User')
  5. title = models.CharField(max_length=200)
  6. text = models.TextField()
  7. created_date = models.DateTimeField(
  8. default=timezone.now)
  9. published_date = models.DateTimeField(
  10. blank=True, null=True)
  11. def publish(self):
  12. self.published_date = timezone.now()
  13. self.save()
  14. def __str__(self):
  15. return self.title

所有以fromimport开始的所有行,都是需要从其他文件中添加一些内容。 所以与其复制和粘贴同样的内容,我们可以用from...... import......来导入这些文件.
class Post(models.Model):- 这行是用来定义我们的模型 (这是一个对象).

  • class 是一个特殊的关键字,表明我们在定义一个对象。
  • Post 是我们模型的一个名字。我们可以给它取另外一个不同的名字(但是我们必须避免使用特殊字符或者空格符)。总是以首字面大写来作为类名。
  • models.Model 表明Post是一个Django模型,所以Django知道它应该被保存在数据库中。

现在我们定义了我们曾经提及到的那些属性:title,text,created_date,published_dateauthor。 为了做到那样我们需要为我们每个字段定义一个类型(它是文本吗? 是数字? 是日期? 到另一个对象的关联,比如用户吗?)。

  • models.CharField - 这是你如何用为数有限的字符来定义一个文本。
  • models.TextField - 这是没有长度限制的长文本。这听起来用在博客文章的内容上挺适合的,对吧?
  • models.DateTimeField - 这是日期和时间。
  • models.ForeignKey - 这是指向另一个模型的连接。

Django的官方文档 https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types
def publish(self): def 表明这是一个函数或者方法,publish是这个方法的名字。
方法通常会return一些东西。 例如在__str__方法中就有这个。 在这种情况下,当我们调用__str__()我们将得到文章标题的文本 (字符串)。
如果关于模型尚有不清楚的,请随时问你的教练 ! 我们知道它很复杂,特别是当你同时学习对象和函数的时候。 但希望它在你看来没有那么神奇!

这里的self 不是很懂,http://python.jobbole.com/81921/

在你的数据库中为模型创建数据表

在这里的最后一步是将我们新的模型添加到我们的数据库。 首先我们必须让Django知道我们在我们的模型(我们刚刚创建的!) 有一些变更。 输入python manage.py makemigrations blog。 它看起来会像这样:
20170825150364657321134.png
Django为我们准备了我们必须应用到我们数据库的迁移文件。
输入python manage.py migrate blog,然后对应的输出应该是:
20170825150364658166600.png