改变不起作用

时间:2018-07-21 06:23:10

标签: odoo odoo-8

我在sale.order.line中创建了一个新字段

_columns = { 'od_deivered_quantity':fields.float('Delivered Quantity',trackvisibility = onchange,readonly = False) }

然后我编写了以下onchange函数:

@api.depends('product_uom_qty')
def onchange_delivered_order(self, cr, uid, ids,context=None):
   res = {}
   delivered_qty = self.product_uom_qty
   return {'value':{'od_delivered_qty':delivered_qty}}

XML代码如下:

<xpath expr="//field[@name='order_line']/tree//field[@name='product_uom_qty']" position="after">
              <field name = "od_delivered_qty"/>
          </xpath>

但不起作用

1 个答案:

答案 0 :(得分:1)

对不起,但是您的代码有点混乱和错误;此外,看起来您像在字段声明期间混合了旧的API样式(v8之前的版本),在onchange方法中混合了新的样式。

让我们回顾一下,我想知道我是否理解您的要求:您需要一个由od_deivered_quantity触发的新字段product_uom_qty。是吗?

我建议使用类似以下的代码块(我将使用新的API样式):

od_deivered_quantity = fields.Float(
    "Delivered Quantity", track_visibility="onchange", readonly=False
)

@api.onchange('product_uom_qty')
def onchange_delivered_order(self):
    # if isinstance(self.product_uom_qty, bool):
    #    return
    delivered_qty = self.product_uom_qty
    self.od_delivered_qty = delivered_qty

请在该onchange方法在您的模块中启动并运行时尝试检查该行为:我在其中放入了一个注释布尔检查,以防万一(由于任何尴尬的原因)该方法被称为传递a {_1}在product_uom_qty上的值。

谈论视图,您的XML可能还可以,因为采用新的API样式https://www.odoo.com/documentation/8.0/reference/orm.html#onchange-updating-ui-on-the-fly

  

计算字段和new-API onchanges均由自动调用   客户而不必将其添加到视图中

让我知道它是否可以正常工作,否则您将遇到任何问题。