### 模型字段
字段被用来定义模型可以存储和在哪里。字段被定义为模型类的属性:
~~~Python
from openerp import models, fields
class LessMinimalModel(models.Model):
_name = 'test.model2'
name = fields.Char()
~~~
#### 公共属性
这很像模型本身,它的字段可以配置,通过配置属性作为参数:
~~~ python
name = field.Char(required=True)
~~~
在所有领域都有一些属性,这里是最常见的:
`string` (`unicode`, default: field's name)
用户界面领域的标签 (用户可见).
`required` (`bool`, default: `False`)
如果 `True`, 字段不能是空的,它必须有一个默认值,或者在创建记录时给定一个值.
`help` (`unicode`, default: `''`)
长期形成的,提供了一个帮助提示在UI的用户.
`index` (`bool`, default: `False`)
Odoo 创建一个请求 [database index](http://use-the-index-luke.com/sql/preface) 在列上
#### 简单字段
有2个广泛的字段: "simple" 字段这是直接存储在模型表中的原子值 "relational" 字段链接记录(同一模型或不同型号)。
简单字段的例子 [`Boolean`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Boolean "openerp.fields.Boolean"), [`Date`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Date "openerp.fields.Date"), [`Char`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Char "openerp.fields.Char").
#### Reserved fields
Odoo创建所有模型中的几个字段[1](https://www.odoo.com/documentation/9.0/howtos/backend.html#autofields). 这些字段是由系统管理和不应该写的。他们可以阅读,如果有用的或必要的:
`id` (`Id`)
在模型中记录的唯一标识
`create_date` ([`Datetime`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Datetime "openerp.fields.Datetime"))
记录的创建日期
`create_uid` ([`Many2one`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2one "openerp.fields.Many2one"))
创造记录的用户
`write_date` ([`Datetime`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Datetime "openerp.fields.Datetime"))
最后修改日期
`write_uid` ([`Many2one`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.fields.Many2one "openerp.fields.Many2one"))
用户谁最后修改记录
#### 特殊字段
默认情况下,Odoo还需要一个名称字段用来所有模型的各种显示和搜索行为。用于这些目的的字段可以被设置 [`_rec_name`](https://www.odoo.com/documentation/9.0/reference/orm.html#openerp.models.Model._rec_name "openerp.models.Model._rec_name").
>练习
定义一个模型
定义一个新的数据模型 *Course* 在 *openacademy* 模块。一个课程有一个标题和一个描述。课程必须有一个标题。
编辑文件 `openacademy/models.py` 包含 *Course* 类.
*openacademy/models.py*
~~~ python
from openerp import models, fields, api
class Course(models.Model):
_name = 'openacademy.course'
name = fields.Char(string="Title", required=True)
description = fields.Text()
~~~