django 1.8 官方文档翻译:2-1-1 模型语法

模型

模型是你的数据的唯一的、权威的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

基础:

  • 每个模型都是django.db.models.Model 的一个Python 子类。

  • 模型的每个属性都表示数据库中的一个字段。

  • Django 提供一套自动生成的用于数据库访问的API;详见_执行查询_。

简短的例子

这个例子定义一个Person模型,它有first_namelast_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_namelast_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所在应用的名称。

例如,如果你的应用的模型位于myapp.models模块(manage.py startapp 脚本为一个应用创建的包结构),INSTALLED_APPS部分看上去应该是:

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

当你在INSTALLED_APPS 中添加新的应用名时,请确保运行命令manage.py migrate,可以首先使用manage.py makemigrations 来为它们生成迁移脚本。

字段

模型中不可或缺且最为重要的,就是字段集,它是一组数据库字段的列表。字段被指定为类属性。 要注意选择的字段名称不要和_模型 API_ 冲突,比如cleansave 或者delete

例如:

from django.db import models

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 根据字段类的类型确定以下信息:

  • 数据库当中的列类型 (比如, INTEGER, VARCHAR)。

  • 渲染表单时使用的默认HTML _部件_(例如,,