django官方文档——模型与数据库

模型和数据库¶

一个模型是你的数据的唯一的,精确的数据来源。它包含你所储存的数据的字段的本质和行为。通常每个模型对应一个数据库中的表。

  • 模型
  • 构造查询
  • 统计
  • 管理器
  • 执行原始 SQL 查询
  • 管理数据库事务
  • 使用多个数据库
  • 数据库访问优化

模型¶

一个模型是你的数据的唯一的,精确的数据来源。它包含你所储存的数据的字段的本质和行为。通常每个模型对应一个数据库中的表。

基本上:

  • 每一个模型是一个由 django.db.models.Model 继承而来的子类。
  • 模型的每一个属性对应一个数据库中的字段。
  • Django 会为你的模型自动生成数据库操作的 API ;详见 构造查询

See also

本文档有一篇名为 模型例子的官方文档 姐妹文档。(在 Django 的源代码中,这些例子在 tests/modeltests 目录下。)

快速例子¶

以下例子定义了一个关于人( Person )的模型,包含姓( first_name )和名( last_name )两个字段:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_name last_name 是模型的两个 字段 ,每个字段定义为类的属性,每个属性映射到一个数据库的列。

上例中的 Person 模型将会创建如下的数据库表:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

一些技术说明:

  • 数据库表的名称 myapp_person 是自动根据模型的元数据创建的,创建的方法可以重载。详见 Table names
  • 自动添加了一个 id 字段,这种行为也是可以重载的。参见 自动主键字段
  • 上例中的 CREATE TABLE SQL 使用的是 PostgreSQL 语法,但值得指出的是 Django 会根据你的 设置文件 中设置的数据库类型在后台生成相应的 SQL 语句。

使用模型¶

一旦定义好了你的模型,就得告诉 Django 你要 使用 这些模型。操作方法是编辑你的设置文件,在 INSTALLED_APPS 设置中增加你的 models.py

例如,如果你的应用中模型放在 mysite.myapp.models 模块(由 manage.py startapp 语句创建的包结构)中,那么 INSTALLED_APPS 应当包含如下内容:

INSTALLED_APPS = (
    #...
    'mysite.myapp',
    #...
)

每次向 INSTALLED_APPS 增加新的应用后,必须执行 manage.py syncdb

字段¶

一个模型最重要且不可或缺的部分就是数据库中定义的字段的列表。字段以类的属性的方式定义。

例如:

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

字段类型¶

你的模型中的每一个字段都应当是相应的 Field 类的实例。 Django 使用字段类来决定以下事项:

  • 数据库中的列的类型(如 INTEGERVARCHAR )。
  • 在 Django 管理站点中使用的 控件 (如 type="text">