当前位置:首页>python>中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 13.车辆绑定

中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 13.车辆绑定

  • 2026-10-11 07:57:14
中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 13.车辆绑定

原始需求图:

车辆编号:

001

牌照:

沪A7868

绑定日期:

2020/7/9

教练工号:

111

教练姓名:

王五

解绑日期:

新增数据模型

models目录新建car_bind.py数据模型文件,代码如下:

from odoo import fields, modelsclass NebulaCarBind(models.Model):    _name = "nebula.car.bind"    _description = "车辆绑定"    _order = 'name'    active = fields.Boolean('是否有效', default=True)    name = fields.Char('绑定简情', size=30)    car_name = fields.Many2one('nebula.car', string='车辆编号', index=True,                               size=8, copy=False,                               domain=[('active', '=', True)])    license_plate = fields.Char('车辆牌照', related='car_name.license_plate',                                store=True)    teacher_name = fields.Many2one('nebula.teacher', string='教练编号',                                   index=True, size=8, copy=False,                                   domain=[('active', '=', True)])    teacher_full_name = fields.Char('教练姓名', related='teacher_name.full_name',                                    store=True)    bind_date = fields.Date('绑定日期')    unbind_date = fields.Date('解绑日期')    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('备注')    #  TODO: 一辆车只能有一个教练,一个教练也只能有一辆车

这里用了一个domain,将active=True的数据过滤出来供选择。

将该文件名添加到models目录下__init__.py文件中,之前已经有演示。

设置访问权限

在security目录下的ir.model.access.csv新增一行权限记录。

access_nebula_car_bind,nebula.car.bind,model_nebula_car_bind,group_peijia_manager,1,1,1,1

创建视图层

在views目录新增car_bind_views.xml文件,先用默认方式展示即可,待模块加载成功后再逐步修改和完善文件,内容如下:

<?xml version="1.0" encoding="utf-8"?><odoo>    <act_window id="peijia.action_car_bind_views" name="车辆绑定"    res_model="nebula.car.bind" view_mode="tree,form" />
<?xml version="1.0" encoding="utf-8"?><odoo>    <act_windowid="peijia.action_car_bind_views"name="车辆绑定"    res_model="nebula.car.bind" view_mode="tree,form" />

修改peijia目录下__manifest__.py文件中data段,在views/car_type_views.xml前新增views/car_bind_views.xml文件名。

在views目录下car_views.xml文件,教练管理菜单项下添加菜单项指向该子模块,并修改公司费用sequence序号,代码:

<menuitem id="menu_car_bind_views" name ="车辆绑定"         parent="menu_peijia_car_data" sequence="120"         action="peijia.action_car_bind_views"/>

截图:

重启后,更新陪驾模块,查看是否已经有相关菜单和界面。正常后读者可继续修改视图层。

界面展示

列表效果:

表单效果:

最新文章

随机文章