### 模型字段 字段被用来定义模型可以存储和在哪里。字段被定义为模型类的属性: ~~~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() ~~~