我正在使用从模块stock.quant继承的odoo 10,我添加了新的属性和新的方法。 我希望在每次在stock.quant中创建一个新对象后执行我的方法。 这是我的代码 感谢您的帮助
class stock_quant(models.Model):
_inherit = 'stock.quant'
inventory_value_charge = fields.Float('Total Value',store=True,compute='update_stock_value')
@api.one
@api.depends('qty')
def update_stock_value(self):
stock_price_obj = self.env['stock.price.partition'].search([('id', '!=', False)])
val_obj = stock_price_obj.search([('reception.pack_operation_product_ids.pack_lot_ids.lot_id.id', '=', self.lot_id.id)])
if val_obj!= False:
val_obj.calccule_price()
else:
self.inventory_value_charge=self.inventory_value
#stock_price_obj = self.env['stock.price.partition'].search([('reception.pack_operation_product_ids.pack_lot_ids.lot_id.id', '=', self.lot_id.id)])
return True
@api.model
def create(self, vals):
res = super(stock_quant, self).create(vals)
self.update_stock_value()
return res
答案 0 :(得分:2)
首先计算您不必调用的字段 该方法,因为它已经在 创建通话。并且在写入调用中也是如此,但前提是您更改了qty字段。
因此删除您刚刚第二次调用的create方法。
现在通过添加一些打印调用来确保您的方法被调用,如果 您不知道如何在IDE中使用调试。
确保将模块导入__init__
文件中。
答案 1 :(得分:1)
只需像这样更改您的创建功能
@api.model
def create(self, vals):
res = super(stock_quant, self).create(vals)
res.update_stock_value()
return res