以CRM /商机形式

时间:2018-08-02 12:23:12

标签: python odoo odoo-11

我有安装了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)))

选择第一个选项后,如何在第二个选择中添加所需的值?

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

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

  • x_modelA:x_name(char)
  • x_modelB:x_name(char),x_a1(与x_modelA相关的许多个对象)
  • x_modelC:x_name(char),x_b1(与x_modelB相关的许多个对象)

在机会中,​​我创建了3个字段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