当前位置:首页>python>中篇Python(ODOO)篇 第四章 ODOO项目优化部分(三)车辆验证模块增强

中篇Python(ODOO)篇 第四章 ODOO项目优化部分(三)车辆验证模块增强

  • 2026-09-10 17:41:57
中篇Python(ODOO)篇 第四章 ODOO项目优化部分(三)车辆验证模块增强

车辆验证默认值

车辆验证子模块,name字段如果没有赋值,我们用车辆编码和牌照填充。

首先让car_name字段必填,然后在创建的时候通过继承create事件,查找车辆对应的编号和牌照,组合后填充到name里面。关键代码:

@api.modeldef create(self, vals):    car_model = self.env['nebula.car'].search([('id', '=', vals.get('car_name'))])    verify_name = '车辆编号_' + car_model.name + '__牌照_' + car_model.license_plate    if vals.get('name', _('New')) == _('New'):        vals['name'] = verify_name    result = super(NebulaCarVerify, self).create(vals)    return result

ODOO每个表都有一个字段(ID)为唯一不重复值。

车辆验证

车辆验证子模块,该模块也可以改造成类似车辆绑定模块,即每一辆车一条记录。每次车辆验证都可以修改验证日期和下一验证日,并保存修改人信息,保存后修改车辆管理子模块中的下次验证日期。

这里仅实现保存的时候,会检查该车辆下一验证日期情况,如果该车辆验证日期小于车辆验证子模块,直接替换为新日期。

1、在车辆管理(car.py)数据模型文件中添加write_car_next_verify函数,建议和本模块相关函数最好放在一起,方便管理。

# 检查传入的车辆日期大于数据库中next_verify字段的值,写入def write_car_next_verify(self, car_id, next_date):    self.env["nebula.car"].search(        [("id", "=", car_id), ("next_verify", "<", next_date)]    ).write({"next_verify": next_date})

截图:

2、在车辆验证(car_verify.py)数据模型文件中添加新建和保存时传递参数到相关函数。

@api.modeldef create(self, vals):    if vals.get('name', _('New')) == _('New'):        car_model = self.env['nebula.car'].search([('id', '=', vals.get('car_name'))])        verify_name = '车辆编号_' + car_model.name + '__牌照_' + car_model.license_plate        vals['name'] = verify_name    if vals.get('next_date') and vals.get('active'):        next_date = vals.get('next_date')        car_id = vals.get('car_name')        write_car_next_verify(self, car_id, next_date)    result = super(NebulaCarVerify, self).create(vals)    return resultdef write(self, vals):    if vals.get('next_date') and self.active:        next_date = vals.get('next_date')        car_id = self.car_name.id        write_car_next_verify(self, car_id, next_date)    result = super().write(vals)    return result

截图:

 注:vals里面的值是本次修改或创建需要更新的键值。

self 是本条记录所有的键值。

3、引入函数声明。

我们点击红色警示符号的下来箭头,选择第一项,导入该函数定义位置。

ODOO会自动在顶部添加一行代码。

但是这个有时候在导入模块的时候会出错,我们需要用相对路径来声明。

from .car import write_car_next_verify

最新文章

随机文章