来自 Odoo 10 一半工作的领域的功能

Function from a field that works half Odoo 10

我注意到一件事,只要我在 Odoo 中激活布尔值,就会显示该消息。我希望 "half_pension is on" 消息仅在我保存表单时出现。我怎样才能做到这一点?

保存按钮自动包含在 Odoo 中

亲切地–

我的class:

class ResPartner_school(models.Model):

    _name = 'ecole.partner.school'
    _order = 'id desc'

    half_pension = fields.Boolean(string='Restauration Scolaire', copy=False)

我的函数:

@api.onchange('half_pension')
def synchroHalfPension(self):
    if self.half_pension:
        print "half_pension is on"
    else:
        print "half_pension is off"

感谢您的帮助!

编辑:

@api.multi
def changed_half_pension(self):
    for record in self:
        if record.half_pension:
            print "half_pension is on"
        else:
            print "half_pension is off"

@api.model
def create(self, vals):
    record = super('ecole.partner.school', self).create(vals)
    record.changed_half_pension()
    return record

@api.multi
def write(self, vals):
    result = super('ecole.partner.school', self).write(vals)
    self.changed_half_pension()
    return result

'ecole.partner.school' 是我目前的 class

无论 print 语句最后是什么,要使用保存按钮调用更改内容,您必须使用 override/extend create()write() 方法你的模特。

class ResPartner_school(models.Model):

    @api.multi
    def changed_half_pension(self)
        for record in self:
            if record.half_pension:
                print "half_pension is on"
            else:
                print "half_pension is off"

    @api.model
    def create(self, vals):
        record = super(ResPartner_school, self).create(vals)
        record.changed_half_pension()
        return record

    @api.multi
    def write(self, vals):
        result = super(ResPartner_school, self).write(vals)
        self.changed_half_pension()
        return result

onchange 装饰器用于在客户端更改字段时调用装饰方法。然后将通过按钮 "save" 保存更改本身。所以在这种情况下 onchange 行为是错误的决定。