## 计算字段和默认值
到目前为止,已直接从数据库中直接检索到的字段。字段也可以 *计算* 。在这种情况下,该字段的值是不从数据库中检索,但计算在传输过程中,通过调用模型的方法。
要创建一个计算字段,创建一个字段,并将其属性“计算”设置为方法的名称。计算方法应简单地设置字段的值来计算在“自我”的每一个记录。
Danger
`self` 是一个集合
这个对象 `self` 是一个 *recordset*, 即, 有序集合记录. 它支持标准的Python操作集合,像 `len(self)` 和 `iter(self)`, 加上额外的设置操作 `recs1 + recs2`.
迭代 `self` 给出了一个由一个记录,其中每一个记录是一个集合的大小1 \。您可以使用 “点符号” 来访问单一记录的字段,如 `record.name`.
~~~ python
import random
from openerp import models, fields
class ComputedModel(models.Model):
_name = 'test.computed'
name = fields.Char(compute='_compute_name')
@api.multi
def _compute_name(self):
for record in self:
record.name = str(random.randint(1, 1e6))
~~~