首页 文章

在odoo中保存readonly字段的值

提问于
浏览
3

表格字段总和上有3个字段是readonly . 单击“从readonly保存数据”字段后,不存储在数据库中 .

例:

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 回答

  • 3

    在这种情况下,我更喜欢计算字段 . 只有通过公式更改(例如更改事件)才会保存只读字段 . 在Odoo 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
    

    不需要更改视图定义 . 并且在正常的 Integer 字段中也不需要 store 参数 . 默认值 0 已经是 Integer 的默认值,因此需要定义它 .

    您不必在 sum 的视图中明确定义 readonly ,因为默认情况下,没有反向方法的计算字段是只读的 .

相关问题