Я делаю руководство по началу работы с odoo. И мне нужно создать выражение xpath. Мне нужно унаследовать представление base.view_users_form и добавить страницу для отображения списка свойств. Эта страница должна идти после страницы настроек, поэтому я создал это выражение.
<record id = "inherited_res_user_view_form" model = "ir.ui.view">
<field name = "name">res.users.extended.form</field>
<field name = "model">res.users</field>
<field name = "inherit_id" ref = "base.view_users_form"/>
<field name = "arch" type = "xml">
<xpath expr = "//page[@name='preferences']" position = "after">
<field name = "property_ids"/>
</xpath>
</field>
</record>
и ошибка:
Element '<xpath expr = "//page[@name='preferences']">' cannot be located in parent view
Итак, я знаю, что мое выражение неверно, но я не знаю, каким оно должно быть.
Я тоже не знаю, как узнать. Я читать немного о том, как это работает, и я думаю, что понял достаточно. Но я думаю, что мне нужно увидеть исходный код base.view_users_form, чтобы узнать, как они называют свои элементы, чтобы я мог правильно использовать xpath. Но я также не могу найти исходный код.
Если вы внимательно посмотрите на код view_users_form, то увидите, что страница называется references
, а не preferences
.
Попробуйте следующий XPath:
<xpath expr = "//page[@name='references']" position = "after">
<page string = "Properties" name = "property_ids">
<field name = "property_ids"/>
</page>
</xpath>
inherit_id
должно быть родительским представлением id
(атрибут, установленный в теге записи), и в приведенном выше примере вы использовали родительское представление внешний идентификатор (module_name.view_id
), которое позволяет ссылаться на запись, не зная ее идентификатора в базе данных.
В учебнике говорится, что представление расширения ссылается на своего родителя, используя поле inherited_id. Я знал, что поле inherited_id должно быть «base.view_users_form», поэтому я предположил, что у родителя будет поле
<field name = "name">base.view_users_form</field>
. Знаете, почему это не так?