This question has been flagged
1 Reply
7484 Views

I want to extend the "hr.employee" model using inheritance. Field to be added in view_employee_tree record id in hr_views.xml using inheritance.

models.py:

class CustomEmployee(models.Model):
_name = 'custom_employee'
_inherit = 'hr.employee'
x_joining_date = fields.Char(string='Joining Date')

custom_field.xml:
<record id="employee_custom_tree_view" model="ir.ui.view">
<field name="name">hr.employee.tree.</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_tree" />
<field name="arch" type="xml">
<xpath expr="//record[@id='view_employee_tree']/field[@name='arch']/tree/field[@name='work_phone']" position="after">
<field name="x_joining_date" />
</xpath>
</field>
</record>

When Upgrading the module, it shows the following error:

Traceback (most recent call last): File "/opt/odoo/odoo/odoo/models.py", line 1037, in _validate_fields check(self) File "/opt/odoo/odoo/odoo/addons/base/ir/ir_ui_view.py", line 337, in _check_xml view_def = view.read_combined(['arch']) File "/opt/odoo/odoo/odoo/addons/base/ir/ir_ui_view.py", line 727, in read_combined arch = self.apply_view_inheritance(arch_tree, root.id, self.model) File "/opt/odoo/odoo/odoo/addons/base/ir/ir_ui_view.py", line 676, in apply_view_inheritance source = self.apply_inheritance_specs(source, specs_tree, view_id) File "/opt/odoo/odoo/odoo/addons/base/ir/ir_ui_view.py", line 654, in apply_inheritance_specs self.raise_view_error(_("Element '%s' cannot be located in parent view") % tag, inherit_id) File "/opt/odoo/odoo/odoo/addons/base/ir/ir_ui_view.py", line 516, in raise_view_error raise ValueError(message) ValueError: Element '<xpath expr="//record[@id='view_employee_tree']/field[@name='arch']/tree/field[@name='work_phone']">' cannot be located in parent view Error context: View `hr.employee.tree.` [view_id: 672, xml_id: n/a, model: hr.employee, parent_id: 306] During handling of the above exception, another exception occurred:
....................................
....................................
....................................

Help me to solve this issue.


Avatar
Discard

Look into odoo inheritance: https://goo.gl/4Zyc9d

Best Answer

Hi,

Update your XML like this,


<record id="employee_custom_tree_view" model="ir.ui.view">
<field name="name">hr.employee.tree.</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='work_phone']" position="after">
<field name="x_joining_date" />
</xpath>
</field>
</record>

Thanks

Avatar
Discard
Author

Its working fine.

But another problem occurs after solving this one.

ValueError: Field `x_joining_date` does not exist