代码之家  ›  专栏  ›  技术社区  ›  Pointer

保存odoo中只读字段的值

  •  3
  • Pointer  · 技术社区  · 6 年前

    class myClass(models.Model):
    
    number_1 = fields.Integer(store=True,default=0)
    number_2 = fields.Integer(store=True,default=0)
    sum = fields.Integer(store=True)
    
    @api.onchange('number_1','number_2')
    def compute_sum(self):
        total = self.number_1 + self.number_2
        self.sum = total
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   CZoellner    6 年前

    在这种情况下,我更喜欢使用计算字段。只读字段不会由公式更改保存(例如在更改事件上)。在奥多11,有一个新的选择 force_save web_readonly_bypass by OCA

    计算字段的解决方案:

    class myClass(models.Model):
    
        number_1 = fields.Integer()
        number_2 = fields.Integer()
        sum = fields.Integer(compute="compute_sum", store=True)
    
        @api.depends('number_1','number_2')
        @api.multi
        def compute_sum(self):
            for record in self:
                total = record.number_1 + record.number_2
                record.sum = total
    

    store 参数正常 Integer 0 已经是默认的

    readonly sum