其实就是定义 class 类型,通过类型创建的对象来封装和管理数据,一定要在这里明确关联和对应关系。
| 程序 | 数据库 |
|---|---|
| class类型 | table表格 |
| attribute属性 | field字段 |
| object对象 | record记录或者行 |
创建的模型对象的属性必须和数据库中的字段类型对应起来。
| 对象中的属性类型定义 | 表中的字段类型 |
|---|---|
| AutoField() | auto_increment 自动增长,一般主键 |
| BooleanField() | bool 布尔类型 |
| NullBooleanField() | bool or null 扩展布尔类型 |
| CharField() | varchar 字符串 |
| TextField() | text 长文本 |
| IntegerField() | int 整数 |
| DecimalField() | double 高精度浮点数 |
| FloatField() | float 单精度浮点数 |
| DateField() | date 日期 |
| TimeField() | time 时间 |
| DateTimeField() | datetime 日期时间 |
| FileField() | blob 二进制 |
| ImageField() | blob 二进制 |
每个字段定义时,都会有自己的一些特殊的选项指定:
| 选项 | 描述 |
|---|---|
| null | 如果为 True,将 NULL 空值存储到数据库中,默认 False |
| blank | 如果为 True,表示该字段允许存储空值,默认 False |
| db_column | 字段名称,如果不指定,直接使用类型属性的名称作为字段名称 |
| db_index | 如果设置为 True,表示给当前字段添加索引支持 |
| default | 给字段设置默认值 |
| primary_key | 是否设置当前字段为主键 |
| unique | 如果为 True,该字段中存储的值必须是唯一的 |
在大部分项目中,还会涉及到多表关联操作:
| 选项 | 描述 |
|---|---|
| ForeignKey | 一对多关联关系,该字段定义在多的一方 |
| ManyToManyField | 多对多关联关系,该字段两方都需要定义 |
| OneToOneField | 一对一关联关系,该字段可以定义在任意一方 |