添加或编辑表单 CRM/opportunity 中的模型

Add or edit a model in form CRM/opportunity

我有一个安装了 CRM 的 Odoo 11。

我创建了 3 个字段(类型选择)并从 编辑表单视图 添加到 CRM/商机中的视图。

我必须在 3 个下拉列表之间创建依赖关系(第一个下拉值限制了第二个下拉列表,第二个和第三个也是如此)。

我认为我可以做模型代码。这是我的问题,无法在表单视图中找到或添加模型。

编辑:

我在字段中找到了高级属性。 在 x_selectionb 的高级属性中,我添加了 Dependencies x_selectiona 和 Compute:

a = [('c','c'),('d','d')]
b = [('e','e'),('f','f')]
for record in self:
    if record.x_selectiona == 'a':
        record.x_selectionb = fields.Selection(a)
    elif record.selectiona == 'b':
        record.x_selectionb = fields.Selection(b)

我得到下一个错误:

raise ValueError("forbidden opcode(s) in %r: %s" % (expr, ', '.join(opname[x] for x in codes)))

如何在第一个选项 select 之后的第二个选项中添加我想要的值?

我意识到我正在访问 self.x_selectionb 中的值,而不是字段

我找到了解决方案。

我创建了 3 个模型(x_modelA、x_modelB、x_modelC)。

  • x_modelA: x_name(字符)
  • x_modelB: x_name(char), x_a1(many2one related to x_modelA)
  • x_modelC: x_name(char), x_b1(many2one related to x_modelB)

在 opportunities 中我创建了三个字段 many2one (x_a, x_b, x_c).

在 xml 视图中,我添加了三个字段:

<field name="x_a"/>
<field name="x_b" domain="[('x_a1', '=', x_a)]"/>
<field name="x_c" domain="[('x_b1', '=', x_b)]"/>

在这一步依赖关系有效,但如果我更改之前的下拉列表,它就会失去依赖关系。

在字段 x_b 中(如果 x_a 更改则清除值)我添加了依赖项 x_a 并在计算中:

for record in self:
   record['x_b'] = False

在字段 x_c 中(如果 x_a 或 x_b 更改则清除值)我添加了依赖项 x_a、x_b 并在计算中:

for record in self:
   record['x_c'] = False