查看“扩展视图”的源代码
←
扩展视图
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看并复制此页面的源代码:
表单,列表和搜索视图是使用arch XML结构定义的。 要扩展视图,我们需要一种方法来修改这个XML。 这意味着需要定位XML中的元素位置,然后在这些位置引入修改。 继承视图正可以实现这个功能。一个继承视图声明如下: <record id="view_form_todo_task_inherited" model="ir.ui.view"> <field name="name">Todo Task form - User extension</field> <field name="model">todo.task</field> <field name="inherit_id" ref="todo_app.view_form_todo_task"/> <field name="arch" type="xml"> <!-- ...match and extend elements here! ... --> </field> </record> inherit_id字段使用特定属性ref引用一个外部标识符来指定要被扩展的视图。 外部标识符将在第4章“模块数据”中更详细地讨论。 对于XML,在其中定位元素的最好方法是使用XPath表达式。 比如,以上一章中定义的表单视图为例,其中一个XPath表达式是// field [@name] ='is_done',这个表达式就是用于定位<field name =“is_done”>元素的。 这个表达式查找name属性等于is_done的任意field元素。 有关XPath的详细信息,请访问https://docs.python.org/2/library/xml.etree.elementtree.html#xpath-support。 如果XPath表达式匹配到多个元素,只有第一个元素会被修改。 因此,表达式应该使用独特的属性以使其指定尽可能具体。 使用name属性是确保我们找到扩展点的确切xml元素的最简单方法。 因此,在我们的视图XML元素上定义name属性是很重要的。 扩展点定位后,您可以修改它或在其附近添加XML元素。 下面是一个写在arch中的实现在is_done字段之前添加date_deadline字段的具体例子: <xpath expr="//field[@name]='is_done'" position="before"> <field name="date_deadline" /> </xpath> 幸运的是,Odoo为此提供了快捷符号,因此大多数时候我们可以完全避免XPath语法。 代替前面的XPath元素,我们仅使用要定位的元素的特定属性及定位类型相关信息就可以了。前面的XPath,我们可以写成: <field name="is_done" position="before"> <field name="date_deadline" /> </field> 请注意,如果字段在同一视图中多次出现,则应始终使用XPath语法。 这是因为在字段第一次出现的时候Odoo将停止查找,而这可能会将您的更改应用在错误的字段上。 通常,我们是在现有字段旁边添加新字段,因此<field>标记经常用作定位器。 但是也可以使用任何其他标签:如<sheet>,<group>,<div>等。 name属性通常是匹配元素的最佳选择,但有时,我们可能需要使用其他东西:例如CSS类元素。 Odoo将找到具有指定的所有属性的第一个元素。 注意 在版本9.0之前,string属性(用于显示标签文本)也可以用作扩展定位器。 从9.0开始,这种做法不再允许了。 这个限制与对这些字符串进行操作的语言翻译机制有关。
返回至
扩展视图
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
odoo 中文开发手册
odoo 开发参考
odoo 实施笔记
Odoo 最佳方案
关于 OdooV
Odoo FAQ
工具
链入页面
相关更改
特殊页面
页面信息
友情链接
odoo官网
odoo中文网
odoo实施