from odoo import fields, models, api class OrderPrice(models.Model): _name = 'order.price' _description = '订单价格对比' sale_order_id = fields.Many2one('sale.order', '销售订单') bfm_order_name = fields.Char(related="sale_order_id.default_code", string='bfm订单号') sale_order_name = fields.Char(related="sale_order_id.name", string='销售订单号') currency_id = fields.Many2one( related='sale_order_id.currency_id', string='货币', store=True) sale_order_amount_total = fields.Monetary(related="sale_order_id.amount_total", tracking=4, string='销售订单金额') bfm_amount_total = fields.Float(string='价格合计', compute='_compute_bfm_amount_total', store=True) def is_float(self,value): try: float(value) return True except ValueError: return False @api.depends('sale_order_id.remark') def _compute_bfm_amount_total(self): for record in self: amount_total = 0 for line in record.sale_order_id.order_line: # 判断remark是否存在并且是否是数字 if line.remark and self.is_float(line.remark): amount_total += float(line.remark) record.bfm_amount_total = amount_total