【问题标题】:How can i call my method after create new object in odoo 10?在odoo 10中创建新对象后如何调用我的方法?
【发布时间】:2018-11-14 12:17:38
【问题描述】:

我正在使用从模块 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

【问题讨论】:

    标签: python python-2.7 odoo odoo-10


    【解决方案1】:

    首先计算字段,您不必调用 该方法,因为它已经在过程中调用 创建呼叫。并且也可以在 write 调用中,但前提是您更改了 qty 字段。

    所以删除你第二次调用的 create 方法。

    现在确保通过添加一些打印调用来调用您的方法,如果 你不知道如何在你的 IDE 中使用 debug。

    确保在 __init__ 文件中导入模块。

    【讨论】:

      【解决方案2】:

      只需像这样更改您的创建功能

      @api.model
      def create(self, vals):
          res = super(stock_quant, self).create(vals)
          res.update_stock_value()
          return res
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 1970-01-01
        相关资源
        最近更新 更多