“在计算字段上搜索和写入”的版本间的差异

来自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字段。