## 計算字段和默認值
到目前為止,已直接從數據庫中直接檢索到的字段。字段也可以 *計算* 。在這種情況下,該字段的值是不從數據庫中檢索,但計算在傳輸過程中,通過調用模型的方法。
要創建一個計算字段,創建一個字段,并將其屬性“計算”設置為方法的名稱。計算方法應簡單地設置字段的值來計算在“自我”的每一個記錄。
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))
~~~