Odoo, как создать правильное выражение xpath

Я делаю руководство по началу работы с 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. Но я также не могу найти исходный код.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы внимательно посмотрите на код 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>

В учебнике говорится, что представление расширения ссылается на своего родителя, используя поле inherited_id. Я знал, что поле inherited_id должно быть «base.view_users_form», поэтому я предположил, что у родителя будет поле <field name = "name">base.view_users_form</field>. Знаете, почему это не так?

Harm 22.03.2022 13:53

inherit_id должно быть родительским представлением id (атрибут, установленный в теге записи), и в приведенном выше примере вы использовали родительское представление внешний идентификатор (module_name.view_id), которое позволяет ссылаться на запись, не зная ее идентификатора в базе данных.

Kenly 22.03.2022 14:25

Другие вопросы по теме