Я работаю над настройкой 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 или связанных с ней модулях.
мой модуль всегда обновляется
Поскольку ваш порядок наследования неверен, вам необходимо проверить, было ли это поле уже прочитано во время наследования.
как это сделать?
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.
Модуль 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>
Для получения более подробной информации ознакомьтесь с разделами документации Разрешение просмотра и Спецификации наследования.
все та же ошибка «невозможно найти в родительском представлении»
@Кенли, тебе нужно добавить ошибку наследования. наследуется неправильное представление и, возможно, в зависимостях отсутствует модуль sale_project
.
Наследование от project.view_task_form2
должно работать, поскольку priority
то же самое и будет разрешено последним, но я предпочитаю наследовать (как вы сказали) непосредственно из представления sale_project.view_sale_project_inherit_form
. Спасибо @CZoellner
@RahmaBegag Проверьте мои изменения и обязательно добавьте sale_project
к записи depends
манифеста модуля ('depends': ['sale_project'],
), как указано CZoellner
.
@Kenly Может работать, но также может не работать, если пользовательский модуль был установлен до установки sale_project.
@CZoellner В этом случае да, и чтобы этого избежать, нам нужно добавить sale_project
к зависимостям модуля, чтобы гарантировать, что модуль установлен до нашего модуля.
спасибо, ребята, я допустил ошибку: я добавил продажу в зависимости вместо sale_project. Я сделал, как ты сказал @kenly, и это добилось того, чего я хотел.
Возможно, вам нужно обновить модель, если вы не можете найти объект.