当前位置:首页>python>中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 2.排档类型

中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 2.排档类型

  • 2026-09-10 00:32:50
中篇Python(ODOO)篇 第三章 ODOO项目开发(三)添加基础部分模块 2.排档类型
目前市面汽车排档类型有M、A、MA,因为有自驾车,所以有N类型,这样可以让排档类型在汽车和预约模块都可使用。
另外,因为排档类型一经录入,不需改变,所以我们将在系统初始化的时候就载入这些默认数据,并且让使用者只能看,不能修改。

排档编码

排档类型

M

手动档

A

自动档

MA

手自一体

N

自驾车

新增数据模型

在peijia->models目录下新增auto_tpe.py数据模型文件,因初始化时直接载入,且不能修改,所以结构简单,代码如下:
from odoo import fields, modelsclass AutoType(models.Model):    _name = "nebula.auto.type"    _description = "车辆排档类型"    _order = 'name'    name = fields.Char('类型编码', size=2, index=True)    name_type = fields.Char('类型名称')
将auto_tpe.py添加到 peijia->models目录下__init__.py文件中import部分,以逗号分割文件名。

设置访问权限

在peijia->security目录下的ir.model.access.csv新增一行只有读权限的记录。

access_nebula_auto_type,nebula.auto.tpe,model_nebula_auto_type,group_peijia_manager,1,0,0,0

创建视图层

在peijia->views目录新增auto_type_views.xml文件,因无特殊要求,所以用默认方式展示即可,内容如下:
<?xml version="1.0" encoding="utf-8"?><odoo>    <act_windowid="peijia.action_auto_type_views"name="排挡类型"    res_model="nebula.auto.type" view_mode="tree,form" /></odoo>
修改peijia目录下__manifest__.py文件中data段,在views/car_type_views.xml前新增views/auto_type_views.xml文件名。
在peijia->views目录下car_views.xml文件,前添加菜单指向排档模块,代码:
<menuitem id="menu_auto_type_views" name="排挡类型"          parent="menu_peijia_base_data" sequence="115"          action="peijia.action_auto_type_views"/>
截图:
全部修改完成后,重启odoo服务,再将应用中陪驾模块升级,汽车陪驾模块的基础资料下拉菜单里面新增了排档类型菜单。因为只有查看权限,所以界面无新增等按钮。

创建默认数据

在data目录(后续无特殊情况,默认都是peijia目录下)新增auto_type_data.xml文件,用来存放排档类默认数据。可能没有data目录,请新建。代码如下:
<?xml version="1.0" encoding="utf-8"?><odoo>    <datanoupdate="1">        <!-- 排挡类型默认数据-->        <recordid="nebula_auto_type_m"model="nebula.auto.type">            <fieldname="name">M</field>            <fieldname="name_type">手动挡</field>        </record>        <recordid="nebula_auto_type_a"model="nebula.auto.type">            <fieldname="name">A</field>            <fieldname="name_type">自动挡</field>        </record>        <recordid="nebula_auto_type_ma"model="nebula.auto.type">            <fieldname="name">MA</field>            <fieldname="name_type">手自一体</field>        </record>        <recordid="nebula_auto_type_n"model="nebula.auto.type">            <fieldname="name">N</field>            <fieldname="name_type">自驾车</field>        </record>    </data></odoo>
特别解释noupdate:
noupdate=1时,即更新模块时不更新数据。此时会增加自己的数据,同样id的数据如果生产时有变更,更新模块时不会变更。
noupdate=0时,即更新模块时同时更新数据,会增加原来代码中的data,同样id的数据如果生产时有变更,将不理会变更,更新时会变回原数据。
我们在__manifest__.py文件中data段最后添加该文件位置,以方便调用。
格式如下:data/auto_type_data.xml
我们重启odoo后更新模块查看效果。

界面展示

列表效果:
查看记录效果:

最新文章

随机文章