gpt4 book ai didi

python - 如何在odoo 10中根据条件使字段可输入?

转载 作者:行者123 更新时间:2023-12-01 08:16:07 25 4
gpt4 key购买 nike

我正在设置注册表单,我需要根据选择将字段 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 = ""

但仍然显示在只读字段中,如何使其可输入?

最佳答案

odoo 中的

compute 字段默认为 readonly=Truestore=False。您可以通过将其传递给字段定义来设置store=True,但要使compute字段可输入/不可只读,您必须传递inverse字段定义中的 code>,它是一个字符串值,是手动设置计算字段值时要运行的函数的名称。这个想法是,计算值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而不执行任何其他操作。这将使计算字段可编辑。

关于python - 如何在odoo 10中根据条件使字段可输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com