- 模型类被定义在应用文件夹下的model.py中
 - 模型类必须继承Django的models.Model类
 - 属性名不能用连续的两条下划线__
 
- 主键:primary key,简写 pk
 - 不需要主动定义,django会自动生成自增长的主键,属性名叫
 id,- 如果开发者自己定义了主键,则django不会再生成默认的主键
 
格式:
属性名=models.字段类型(字段选项)
| 类型 | 说明 | 
|---|---|
| AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建名为id的自动增长属性 | 
| BooleanField | 布尔字段,值为True或False | 
| NullBooleanField | 支持Null、True、False三种值 | 
| CharField | 字符串,必须指定:max_length,表示最大字符个数 | 
| TextField | 大文本字段,一般超过4000个字符时使用 | 
| IntegerField | 整数 | 
| DecimalField | 十进制浮点数,用python中的Decimal实例来表示 必须指定: max_digits最大位数,decimal_places小数位数。  | 
| FloatField | 浮点数 | 
| DateField | 日期  1) 参数 auto_now表示每次修改保存对象时,自动设置该字段为当前时间,用于保存"最后一次修改"时间,默认为False; 2) 参数 auto_now_add表示当对象第一次被创建时自动设置保存当前时间,用于保存"创建时间"时间,默认为值为False; 3) 参数 auto_now_add和auto_now是相互排斥的,不能同时用到一个属性中 | 
| TimeField | 时间,参数同DateField | 
| DateTimeField | 日期时间,参数同DateField | 
| FileField | 上传文件字段 | 
| ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片 | 
| 选项 | 默认值 | 描述 | 是否要迁移修改表结构 | 
|---|---|---|---|
| null | False | True表示表字段允许为空 | 是 | 
| unique | False | True表示表字段不能重复 | 是 | 
| db_column | 属性名称 | 表字段名称 | 是 | 
| primary_key | False | True表示字段设置为了主键,一般作为AutoField的选项使用 | 是 | 
| db_index | False | 创建索引 | 是 | 
| default | - | 默认值 | 否 | 
| blank | False | 在django管理后台新增或编辑一条表数据时,该字段是否允许为空; null是数据库范畴的概念,blank是表单验证范畴的  | 
否 | 
| choices | - | 在django管理后台新增或编辑一条表数据时,该字段显示为下拉框,默认为编辑框 | 否 | 
注意:
choices和blank主要是为django的管理后台页面服务的。
- choices: 性别属性使用了choices选项后,在录入一条数据时,会以下拉框显示
 blank:blank属性默认值为false, 表示录入一条数据时,当前字段必须填写,不能为空,否则js端js校验不通过,例如:下图的comment员工备注信息字段。
如下图:

- 默认为:应用名小写_模型类名小写
 可通过通过
Meta类指定表名
  示例:
# 如果应用名为users,则默认表名为:users_department class Department(models.Model): ... class Meta: # 指定生成的数据库表的名字 db_table = ‘department‘
原文:https://www.cnblogs.com/chichung/p/9905340.html