跳至内容

如何在Odoo 18中定义菜单和动作

如何在Odoo 18中定义菜单和动作

www.chinamaker.net 2025-02-08 11:53:24 admin

Odoo 18在平台优势的基础上继续发展,提供了更多的定制选项,使企业能够打造个性化的体验。这种自定义的一个重要部分是定义菜单和动作,它们对于用户如何导航系统并与数据交互至关重要。对于任何希望优化用户界面并简化工作流程的 Odoo 开发人员或管理员来说,了解如何设置这些内容至关重要。

本指南将引导您完成在Odoo 18中定义菜单和动作的过程,详细介绍所涉及的步骤以及实现这些功能所需的代码。

设置模型

在深入探讨菜单和动作之前,我们需要先建立一个基础模型。该模型将作为菜单和动作配置的基础。在这个示例中,我们将创建一个简单的模型来管理学生数据。

from odoo import models, fields

class StudentData(models.Model):
    _name = "student.data"
    name = fields.Char(string="姓名")
    class_name = fields.Char(string="班级")
    address = fields.Char(string="地址")
  • _name:定义模型的名称,用于Odoo系统中。
  • name:学生姓名的字符字段。
  • class_name:班级名称的字符字段。
  • address:学生地址的字符字段。

该模型将存储有关学生的基本信息,为菜单和动作提供交互的数据。

定义动作

Odoo中的动作决定了用户如何与数据交互。它们定义了视图(如列表、表单、看板),并确定选择菜单项时会发生什么。

以下是一个管理学生记录的动作示例:

<odoo>
    <data>
        <record id="action_student_record" model="ir.actions.act_window">
            <field name="name">学生管理</field>
            <field name="res_model">student.data</field>
            <field name="view_mode">list,form</field>
            <field name="help" type="html">
                <p class="o_view_nocontent_smiling_face">
                    创建数据
                </p>
            </field>
        </record>
    </data>
</odoo>
  • action_student_record:此动作的唯一标识符。
  • model="ir.actions.act_window":表示这是一个窗口动作,用于打开特定视图。
  • name:动作的名称,对用户可见。
  • res_model:此动作适用的模型,本例中为 student.data。
  • view_mode:指定可用的视图(list 表示列表视图,form 表示单个记录视图,tree 在 Odoo 18 中已经不用了)。
  • help:当没有记录时显示的 HTML 格式帮助消息。

此动作允许用户通过树视图和表单视图管理学生记录,为数据交互提供了一个直观的界面。

创建菜单

Odoo中的菜单提供了系统导航的结构。它们是分层的,允许您创建清晰、有组织的导航体验。

以下是定义“学生管理”主菜单和子菜单的方式:

<odoo>
    <data>
        <menuitem id="student_menu_root"
                  name="学生管理"
                  sequence="10">
            <menuitem id="student_order_menu"
                      name="学生"
                      sequence="10">
                <menuitem id="menu_student_records"
                          name="学生记录"
                          action="action_student_record"
                          sequence="10"/>
            </menuitem>
        </menuitem>
    </data>
</odoo>
  • student_menu_root:“学生管理”模块的顶级菜单。
  • sequence:确定菜单显示的顺序(数字越小,显示越靠前)。
  • student_order_menu:根菜单下的子菜单,标签为“学生”。
  • menu_student_records:“学生”下的菜单项,链接到 action_student_record 动作。

这种结构确保用户可以轻松导航到“学生管理”部分并访问学生记录。

扩展菜单和动作定义

为了增强模块功能,您可能希望添加更多功能,例如同时管理班级记录和学生记录。

以下是如何定义管理班级记录的额外动作和菜单的示例:

<odoo>
    <data>
        <!-- 班级记录的动作 -->
        <record id="action_class_record" model="ir.actions.act_window">
            <field name="name">班级记录</field>
            <field name="res_model">class.record</field>
            <field name="view_mode">list,form</field>
            <field name="help" type="html">
                <p class="o_view_nocontent_smiling_face">
                    管理班级
                </p>
            </field>
        </record>
        <!-- 班级记录的菜单 -->
        <menuitem id="class_menu"
                  name="班级记录"
                  action="action_class_record"
                  parent="student_order_menu"/>
    </data>
</odoo>
  • action_class_record:定义管理班级记录的动作。
  • res_model="class.record":指定此动作所应用的模型为 class.record。
  • class_menu:“学生” 菜单下的新菜单项,标签为 “班级记录”。
  • parent="student_order_menu":表明此菜单是 “学生” 菜单的子菜单。

通过以这种方式组织菜单,您提供了一个符合逻辑的结构,用户可以直观地进行导航,确保所有相关功能都被归为一组。

总结

在Odoo 18中定义菜单和动作是任何希望自定义平台以更好地适应其业务流程的人的必备技能。通过精心设置模型、定义动作并组织菜单,您可以创建一个用户友好的界面,从而提高生产力并简化导航。

在本指南中,我们介绍了如何定义一个简单的模型,创建决定用户如何与数据交互的动作,并在分层菜单结构中组织这些动作。无论您是管理学生记录、班级记录还是任何其他类型的数据,这些步骤都将帮助您创建一个高效且直观的Odoo应用程序。借助这些工具,您可以充分发挥Odoo 18的潜力,根据组织的独特需求进行定制,同时提供无缝且有效的用户体验。

如何在Odoo 18中定义菜单和动作
中国 Odoo, 苏州远鼎 2025年2月8日
标签
存档