我正在设置注册表格,我需要根据选择选择将字段A的值输入字段B。
field_a = fields.Char("Field A")
field_b = fields.Char("Field B", compute="mymethod")
field_selection = fields.Selection([('choice_a', "Choice A"), ('choice_b', "Choice B")])
@api.one
@api.depends('selection_choice')
def mymethod(self):
for res in self:
if res.selection_choice == 'choice_a':
res.field_b = res.field_a
else:
res.field_b = ""
但仍显示在只读字段中,如何使其可输入?
答案 0 :(得分:1)
compute
字段是readonly=True
和store=False
。您可以通过将store=True
传递给字段定义来设置compute
,但是要使inverse
字段可输入/非只读,则必须在字段定义中传递depends
,它是一个字符串值,手动设置计算字段值时要运行的函数的名称。这个想法是,在@api.depends
装饰器中提到的字段上计算值compute
。因此,如果您使用手动输入设置inverse
字段值,则可能需要一个depends
函数,该函数将相应地设置相应的field_a = fields.Char("Field A")
field_b = fields.Char("Field B", compute="_compute_field_b", inverse="_set_field_b")
field_selection = fields.Selection([('choice_a', "Choice A"), ('choice_b', "Choice B")])
@api.multi
@api.depends('field_selection, field_a')
def _compute_field_b(self):
for res in self:
if res.selection_choice == 'choice_a':
res.field_b = res.field_a
else:
res.field_b = ""
@api.multi
def _set_field_b(self):
for res in self:
if res.field_selection == 'choice_a':
res.field_a = res.field_b
字段。
inverse
如果在设置还原值时不需要任何return True
功能,则可以{{1}}不执行任何其他操作。这将使计算字段可编辑。