我在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>
但不起作用
答案 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均由自动调用 客户而不必将其添加到视图中
让我知道它是否可以正常工作,否则您将遇到任何问题。