如何通过在其他字段中输入值来自动选中复选框?

时间:2016-08-29 09:17:59

标签: python openerp

我已经为酒店房间管理制作了一个模块,我想用Python检查房间的可用性。我接受了名为available = fields.Boolean()的复选框。现在,我想要在输入check_in_time时自动检查它。那么,我该怎么做?我已经服用了 check_in_time=fields. Datetime()。我已经尝试过这样......

class Hotel_Management(models.Model):

    check_in_time = fields. Datetime()
    available = fields.Boolean()

    @api.onchange('check_in_time')
    def auto_check(self):
        for a in self:
            if a.check_in_time:
                a.available=True
                print a.available
            else:
                print a.available

但是它只在终端中更改了复选框的值....而不是在数据库中....它需要" false"默认值每次都是。那么,告诉我如何更改数据库中复选框的值?

2 个答案:

答案 0 :(得分:1)

你的代码是对的。该值将保存在" Save"在客户端的行动。 onchange将在客户端虚拟保存值。 depends将直接写入数据库。但onchange就足够了。

答案 1 :(得分:0)

是的,你的代码是对的。但您需要使用该值覆盖写入函数,例如:

@api.multi
def write(self, vals):
    res = super(Hotel_Management, self).write(vals)
    if 'check_in_time' in vals:
       if vals['check_in_time']:
            vals['available'] = True
        else:
            print vals['available']
    return res