from odoo import fields, models, api, exceptionsclass NebulaCarBind(models.Model): _name = "nebula.car.bind" _description = "车辆绑定" _order = 'name' _inherit = ['mail.thread', 'mail.activity.mixin'] # 集成消息模型 增加消息记录通知功能 active = fields.Boolean('是否有效', default=True, track_visibility='onchange') name = fields.Many2one('nebula.car', string='车辆编号', index=True, size=8, copy=False, track_visibility='onchange', domain=[('active', '=', True)]) license_plate = fields.Char('车辆牌照', related='name.license_plate', store=True) teacher_name = fields.Many2one('nebula.teacher', string='教练编号', index=True, size=8, copy=False, track_visibility='onchange', domain=[('active', '=', True)]) teacher_full_name = fields.Char('教练姓名', related='teacher_name.full_name', store=True) bind_date = fields.Date('绑定日期', track_visibility='onchange', default=fields.Datetime.now) unbind_date = fields.Date('解绑日期', track_visibility='onchange') date_docket = fields.Datetime('单据日期', required=True, readonly=True, index=True, default=fields.Datetime.now) user_id = fields.Many2one('res.users', string='创建人', index=True, readonly=True, default=lambda self: self.env.user) note = fields.Text('备注', track_visibility='onchange') _sql_constraints = [('check_uniq_car_name', 'unique(name, active)', '该车已经绑定'), ('check_uniq_teacher_name', 'unique(teacher_name, active)', '该教练已经绑定')] '''@api.constrains('name') def _check_name(self): print('self.name.id:', self.name.id) count = self.search_count([('name', '=', self.name.id), ('active', '=', True)]) if count > 1: raise exceptions.ValidationError("不允许同车辆编号") '''