前言

本篇将介绍Django如何建立数据库,如何创造你的第一个模型,还会接触到Django自带的后台管理系统,

数据库配置

数据库连接

打开 demo_proj/settings.py,Django 项目的配置都在此。
Python 内置了 SQLite,你无需安装就可以使用它,但当你开始一个真正的项目时,你可能更倾向使用一个更具扩展性的数据库,例如 MySQL, 在配置文件中使用 SQLite 作为默认数据库,我们的演示也用SQLite。以下就是数据库的配置项:

走进 model  [三]_model

  • ENGINE
    数据库引擎,看你是选择哪种数据库,是SQLite,或者 是MySQL,还是其他,可选值有

走进 model  [三]_后端开发_02

  • name
    数据库名称,如果是 SQLite,数据库将是你电脑上的一个文件,那么, NAME 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。

创建数据库

Django是通过 migrate命令来检查 settings.py 文件中的 INSTALLED_APP 配置项,为其中的每个应用创建数据表的。
先来关注下 INSTALLED_APP配置项,我们在Django项目中所有的应用对会包括在此(上篇文章创建的 demo_app也要手动加到这配置项里)。通常 INSTALLED_APP会默认包括以下自带的应用

走进 model  [三]_model_03

这些应用被默认启用是为了给项目提供方便,比如 django.contrib.admin会帮你建立个管理后台, django.contrib.auth会极大方便登录验证,等等,后续我们会陆续介绍到。这些应用都需要数据表,比如 django.contrib.admin是后台管理,那么就必须要有后台管理员。那么就要求数据库中必须有类似user表的来维护管理员数据。
Django 通过 migrate命令 根据 不同的app 来创建不同的表,执行命令

走进 model  [三]_model_04

当看到 如下反馈就表示执行成功:

走进 model  [三]_model_05

我们可以查看数据库,会发现多了许多的表,如图所示:走进 model  [三]_后端开发_06

创建模型

模型是真实数据的简单明确的描述,它包含了存储的数据所必要的字段和行为。每一个模型映射一个数据库表,一般都写在 models.py中。
打开 demo_app中的models.py 文件,修改代码如下:

走进 model  [三]_model_07

在Cat 类 我们定义了 __str__()方法,这个方法用来有什么作用,大家可以自己找找答案。

那我们如何把我们刚建的Cat类映射到数据表中呢?执行如下命令即可:

走进 model  [三]_model_08

我们查看数据库,会发现了多了Cat这个表走进 model  [三]_model_09

这样,我们新建的模型就和数据库中的表建立起了映射关系了。那我们如何操作模型呢,也就是我们如何实现对数据库进行增删改查操作呢?Django 为我们提供了各种API,我们进入交互式Python命令行来体验下:

走进 model  [三]_后端开发_10

至此,Django如何配置数据库,如何创建model,如何把model映射到数据库中以及对model的操作我们都以熟悉了下,我们将在后面的课程中的更加深入的介绍model的一些用法。

Django 管理后台

Django 为我们提供了功能强大的后台。在后台中,我们可以利用Django自带的功能对定义的对象进行添加,修改,和删除。

创建一个管理员账号

要登录到后台,首先必须有管理员账户,运行如下命令:

走进 model  [三]_后端开发_11

启动我们的工程,在浏览器中输入 http://127.0.0.1:8000/admin/,系统会跳转到后台系统的登录页面:

走进 model  [三]_model_12

输入我们刚才建立的管理员账号和密码,我们会进入到后台管理系统的索引页

走进 model  [三]_后端开发_13

我们刚才建立的Cat类在哪里呢?别急,要想在后台看到这个类还得告诉后台系统,Cat类需要被管理,打开 demo_app/admin.py 文件:

走进 model  [三]_model_14

刷新页面,就可以看到我们定义的Cat类了:

走进 model  [三]_model_15

点击Cat,系统就会跳转的Cat 对象的列表页面,我们刚才演示的操作API 新建的 Cat 对象也在此

走进 model  [三]_后端开发_16

点击 miaomiao 就进入到编辑页面

走进 model  [三]_后端开发_17

编辑和删除功能都能实现。

model字段类型

在介绍了上面的内容之后,我再来补充介绍下常用的Djano字段类型。

走进 model  [三]_后端开发_18

  • models.AutoField :默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。

  • models.NullBooleanField :允许 NULL 作为其中一个选项。推荐使用这个字段而不要用 BooleanField 加 null=True 选项。admin 用一个选择框, <select> (三个可选择的值:“Unknown”, “Yes” 和 “No” ) 来表示这种字段数据。

  • models.Decimal:必须指定整数位max_digits和小数位decimal_places

  • models.DateField:对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。同(models.DateTimeField)