3.Django模型

原文: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',。 所以最终的代码应如下所示:
20170825150364652911362.png

创建一个博客文章模型

我们在blog/models.py文件中,定义所有的Models对象— — 我们将在其中都定义我们的博客文章。

让我们打开blog/models.py,从中删除一切并编写这样的代码:

from django.db import models
from django.utils import timezone


class 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

所有以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

Comments
Write a Comment