Сделать поле sale_line_id невидимым

Я работаю над настройкой Odoo и столкнулся с проблемой с полем sale_line_id.

Я наследую модель project.task в своем пользовательском модуле (wsl_available_drivers). Ввиду мне нужно сделать поле sale_line_id невидимым.

<record id = "view_task_form2" model = "ir.ui.view">
    <field name = "name">Project.task.view.form.inherit.available.drivers</field>
    <field name = "model">project.task</field>
    <field name = "inherit_id" ref = "project.view_task_form2"/>
    <field name = "arch" type = "xml">
        <xpath expr = "//field[@name='user_ids']" position = "before">
            <field name = "first_user" invisible = "1"/>
            <field name = "Journey_start_date"/>
            <field name = "recurring_task" invisible = "1"/>
        </xpath>
        <xpath expr = "//field[@name='sale_line_id']" position = "attribute">
           <attribute name = "invisible">1</attribute>
        </xpath>

    </field>
</record>

При попытке скрыть sale_line_id с помощью XPath я получаю сообщение об ошибке, сообщающее, что это поле не существует в модели project.task.

При дальнейшем расследовании: Я обнаружил, что sale_line_id связан с моделью Task, а связанная модель указывает на sale.order.line.

Однако я не могу найти поле sale_line_id в модели sale.order.line или связанных с ней модулях.

Возможно, вам нужно обновить модель, если вы не можете найти объект.

jdweng 30.06.2024 19:11

мой модуль всегда обновляется

Rahma Begag 01.07.2024 12:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку ваш порядок наследования неверен, вам необходимо проверить, было ли это поле уже прочитано во время наследования.

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

Модуль sale_project добавляет два поля sale_line_id и видимость поля зависит от группы, к которой принадлежит пользователь, второе поле имеет дополнительный атрибут invisible

Выражение XPath будет соответствовать первому найденному узлу. Если вам нужно скрыть два поля, добавьте еще один XPath, чтобы настроить таргетинг на второе поле.

Пример:

<record id = "view_task_form_inherit" model = "ir.ui.view">
    <field name = "name">project.task.form.inherit</field>
    <field name = "model">project.task</field>
    <field name = "inherit_id" ref = "sale_project.view_sale_project_inherit_form"/>
    <field name = "arch" type = "xml">

        <xpath expr = "//field[@name='sale_line_id']" position = "attributes">
            <attribute name = "invisible">1</attribute>
        </xpath>

        <xpath expr = "//field[@name='sale_line_id'][2]" position = "attributes">
            <attribute name = "invisible">1</attribute>
        </xpath>
        
    </field>
</record>

Для получения более подробной информации ознакомьтесь с разделами документации Разрешение просмотра и Спецификации наследования.

все та же ошибка «невозможно найти в родительском представлении»

Rahma Begag 01.07.2024 12:54

@Кенли, тебе нужно добавить ошибку наследования. наследуется неправильное представление и, возможно, в зависимостях отсутствует модуль sale_project.

CZoellner 01.07.2024 14:58

Наследование от project.view_task_form2 должно работать, поскольку priority то же самое и будет разрешено последним, но я предпочитаю наследовать (как вы сказали) непосредственно из представления sale_project.view_sale_project_inherit_form. Спасибо @CZoellner

Kenly 01.07.2024 15:55

@RahmaBegag Проверьте мои изменения и обязательно добавьте sale_project к записи depends манифеста модуля ('depends': ['sale_project'],), как указано CZoellner.

Kenly 01.07.2024 16:05

@Kenly Может работать, но также может не работать, если пользовательский модуль был установлен до установки sale_project.

CZoellner 01.07.2024 16:21

@CZoellner В этом случае да, и чтобы этого избежать, нам нужно добавить sale_project к зависимостям модуля, чтобы гарантировать, что модуль установлен до нашего модуля.

Kenly 01.07.2024 16:37

спасибо, ребята, я допустил ошибку: я добавил продажу в зависимости вместо sale_project. Я сделал, как ты сказал @kenly, и это добилось того, чего я хотел.

Rahma Begag 02.07.2024 10:58

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