Odoo(九):简单的UI界面
数据文件(XML)
前面,我们通过CSV文件添加了数据。当要加载的数据具有简单格式时,CSV 格式很方便。当格式更复杂时(例如加载视图的结构或电子邮件模板),我们使用 XML 格式。虽然可以通过 CSV 文件加载此类数据,但使用 XML 文件更方便。
XML 文件必须添加到与 CSV 文件相同的文件夹中,并且在 __manifest__.py
. 安装或更新模块时,数据文件的内容也会按顺序加载,因此对 CSV 文件所做的所有说明都适用于 XML 文件。当数据链接到视图时,我们将它们添加到views
文件夹中。
在 Odoo 中,用户界面(操作、菜单和视图)主要是通过创建和组合 XML 文件中定义的记录来定义的。一个常见的模式是菜单 > 操作 > 视图。要访问记录,用户需要浏览多个菜单级别;最深层次是触发打开记录列表的动作。
动作(Actions)
可以通过三种方式触发操作:
- 通过单击菜单项(链接到特定操作)
- 通过单击视图中的按钮(如果这些按钮与操作相关联)
- 作为对象的上下文动作
这里只介绍第一种情况
例如,我们有一个test.model
模型,他的最基本的动作是:
<record id="test_model_action" model="ir.actions.act_window">
<field name="name">Test action</field>
<field name="res_model">test.model</field>
<field name="view_mode">tree,form</field>
</record>
id
是一个外部标识符。它可以用来引用记录(不知道它的数据库标识符)。model
有一个固定值ir.actions.act_window
name
是动作的名称。res_model
是动作适用的模型。view_mode
是可用的视图;在这种情况下,它们是列表(树)和表单视图。
菜单(Menus)
为了降低声明菜单 ( ir.ui.menu
) 并将其连接到相应操作的复杂性,我们可以使用<menuitem>
快捷方式 。
test_model_action
的基本菜单是:
<menuitem id="test_model_menu_action" action="test_model_action"/>
菜单test_model_menu_action
链接到动作test_model_action
,动作链接到模型test.model
。如前所述,动作可以看作是菜单和模型之间的链接。
代码
代码
estate/views/estate_property_view.xml
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<record id="estate_property_action_window" model="ir.actions.act_window">
<field name="name">房地产广告</field>
<field name="res_model">estate.property</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="estate_property_menu_action" action="estate_property_action_window"/>
</data>
</odoo>
estate/__manifest__.py
# -*- coding: utf-8 -*-
{
'name': '房产广告',
'version': '1.0',
'summary': '房产广告',
'sequence': 10,
'description': """
房产广告
""",
'author': 'Pure',
'depends': [],
'data': [
'security/ir.model.access.csv',
'views/estate_property_view.xml',
],
'installable': True,
'application': True,
}
见证奇迹
升级模块后我们可以看到该模块已经出现
进入该模块
下面未定义的tree视图和form视图。
当我们没有定义tree视图和form视图的时,Odoo会生成一个默认的form视图tree视图的页面,可能默认的页面对于我们来说官感不是太好,而且某些字段是具有关联性的会对为止有要求,当然我们可以自定义这些字段的位置,后面会讲