“在计算字段上搜索和写入”的版本间的差异
来自Odoo大V社-odoo中文开发手册
(创建页面,内容为“我们刚刚创建的计算字段可以被读取,但不能被搜索和写入。为了启用这些操作,我们首先需要为它们实现专门的函数。除了...”) |
|||
第11行: | 第11行: | ||
compute='_compute_stage_fold', | compute='_compute_stage_fold', | ||
− | # store=False, # the default | + | <nowiki># store=False, # the default</nowiki> |
search='_search_stage_fold', | search='_search_stage_fold', |
2017年4月30日 (日) 01:23的版本
我们刚刚创建的计算字段可以被读取,但不能被搜索和写入。为了启用这些操作,我们首先需要为它们实现专门的函数。除了compute函数,我们还可以设置search函数,实现搜索逻辑,以及inverse函数,实现写逻辑。
使用这些,我们的计算字段声明如下:
# class TodoTask(models.Model):
stage_fold = fields.Boolean(
string='Stage Folded?',
compute='_compute_stage_fold',
# store=False, # the default
search='_search_stage_fold',
inverse='_write_stage_fold')
支持的函数是:
def _search_stage_fold(self, operator, value):
return [('stage_id.fold', operator, value)]
def _write_stage_fold(self):
self.stage_id.fold = self.stage_fold
每当在搜索域表达式中找到 a (field, operator, value)就会调用搜索函数。它接收到搜索的操作符和值,并期望将原来的搜索元素转换为另一个域搜索表达式。 inverse函数执行计算的反向逻辑,查找在计算源字段中写入的值。在我们的示例中,这意味着回到stage_id.fold字段。