odoo - 如何在odoo 13中创建一个新标签?
问题描述
您好我想在 hr.contract.form 中创建一个新选项卡。
当我创建一个新组 xpath 元素时,我收到该组未添加到根元素的错误消息。
ValueError: Element '<page string="Assignment Information" name="assignment_information">' cannot be located in parent view
当我创建一个新页面和一个新组时,这些字段只会显示在“合同详细信息”选项卡中,而不是新的选项卡中。这是我的 hr.contract.xml 文件。这些字段在 hr_contract.py 文件中定义,并且它们应该出现,所以应该没问题。
<?xml version="1.0"?>
<odoo>
<record model="ir.ui.view" id="hr_contract_view_form">
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
<field name="model">hr.contract</field>
<field name="name">mycompany.hr.contract.form</field>
<field name="arch" type="xml">
<!-- Additional fields in the contract details tab -->
<xpath expr="//group[@name='duration_group']" position="after">
<group string="Tasks" name="tasks">
<label for="employee_tasks"/>
<div>
<field name="employee_tasks"/>
</div>
</group>
</xpath>
<!-- Assignment Information tab-->
<page string="Assignment Information" name="assignment_information">
<group name="assignment_information">
<xpath expr="//group[@name='additional_assignment_information']" position="after">
<group string="Assignment Location" name="assignment_location">
<label for="assignment_location"/>
<div>
<field name="assignment_location"/>
</div>
</group>
</xpath>
</group>
</page>
</field>
</record>
</odoo>
这是 hr_contract.py 文件:
from logging import getLogger
from odoo import models, fields
LOGGER = getLogger(__name__)
class EmployeeContract(models.Model):
'''
Extend hr.contract model to add custom fields.
'''
_inherit = 'hr.contract'
employee_tasks = fields.Text(
string='Employee tasks',
store=True,
readonly=False,
translate=False,
help='Custom colon-separated (name: value) tasks assigned to the employee.'
)
assignment_location = fields.Text(
string='Assignment Location',
store=True,
readonly=False,
translate=False,
help='Location of the freelancers assignment'
)
感谢您查看它!
解决方案
您错误地添加了新页面。试试这个
<?xml version="1.0"?>
<odoo>
<record model="ir.ui.view" id="hr_contract_view_form">
<field name="inherit_id" ref="hr_contract.hr_contract_view_form"/>
<field name="model">hr.contract</field>
<field name="name">mycompany.hr.contract.form</field>
<field name="arch" type="xml">
<!-- Additional fields in the contract details tab -->
<xpath expr="//group[@name='duration_group']" position="after">
<group string="Tasks" name="tasks">
<label for="employee_tasks"/>
<div>
<field name="employee_tasks"/>
</div>
</group>
</xpath>
<!-- Assignment Information tab-->
<xpath expr="//notebook/page[@name='your previsous page name']" position="After">
<page string="Assignment Information" name="assignment_information">
<group name="assignment_information">
<xpath expr="//group[@name='additional_assignment_information']" position="after">
<group string="Assignment Location" name="assignment_location">
<label for="assignment_location"/>
<div>
<field name="assignment_location"/>
</div>
</group>
</xpath>
</group>
</page>
</xpath>
</field>
</record>
</odoo>
推荐阅读
- kubernetes - 使用kops创建集群时创建LoadBalancer的原因是什么
- node.js - 获取错误“节点”:使用主管设置 laravel-echo-server 时没有这样的文件或目录
- raspberry-pi - Zigbee 协调器在 OpenHab2 中离线
- python - 重复地将 6 个随机生成的数字与来自 csv 的数据相乘
- dart - 如果其中包含有状态小部件,我应该使页面有状态吗?
- clojure - Clojure 和 Compojure:响应映射为零
- node.js - 如何用逗号分割参数数组?
- javascript - 如何在 vue.js 中将类型数组对象更改为格式对象而不使用循环方法?
- python - 在Django中预先声明后在render方法中设置数据
- javascript - 如何在 Angular 6 中获取本地系统的 IP 地址?