Я хотел бы добавить поля из моего product.product в мою недавно созданную форму Expense (legacy_expense), которая наследует hr.expense.expense. Я создал этот модуль для редактирования рабочего процесса модуля управления расходами - мне это удалось.Добавление полей из другого объекта в форму в OpenERP
Я новичок в OpenERP, и у меня возникают проблемы с его работой. Я пробовал наследовать поле many2one product_id в форме через мое .py-поле, а затем получить его для отображения в xml, но всегда появляется ошибка «XMLSyntaxError: ошибка конструкции атрибутов, строка 25, столбец 13»
I «Угадаю, что мое наследование неверно, и я не знаю, как связать эти два объекта. Если кто-то сможет мне помочь, это будет здорово!
Это мой подгонять legacy_expense.py файл:
from openerp.osv import fields, osv
class legacy_expense(osv.osv):
_inherit = 'hr.expense.expense'
_columns = {
'state': fields.selection([
('draft', 'New'),
('cancelled', 'Refused'),
('confirm', 'Waiting Approval'),
('done', 'Paid'),
], 'Order State', readonly= False, select=True),
'product_id': fields.many2one('product.product','Product',required=True),
}
legacy_expense()
Это файл legacy_expense.xml:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id = "view_expenses_form_custom" model="ir.ui.view">
<field name="name">view.expenses.form.custom</field>
<field name="model">hr.expense.expense</field>
<field name="type">form</field>
<field name="inherit_id" ref="hr_expense.view_expenses_form" />
<field name="arch" type="xml">
<data>
<header>
<button name="signal_draft_to_confirm" states="draft" string="Submit" type="workflow" groups="base.group_hr_user" />
</header>
<header>
<button name="signal_confirm_to_done" states="confirm" string="Approve Expense" type="workflow" groups="base.group_hr_user" />
</header>
<header>
<button name="signal_confirm_to_refused" states="confirm" string="Reject Expense" type="workflow" groups="base.group_hr_user" />
</header>
</data>
<xpath expr = "/form/sheet/group/group[2]/field[@name='user_valid']"position="after">
<field name="product_id"/>
</xpath>
</field>
</record>
</data>
</openerp>
Опять же, заранее спасибо всем, кто может помочь!
Спасибо за отличный ответ. Мне не удалось заставить его работать. Я предполагаю, потому что мне нужно будет добавить таблицу продуктов, когда я наследую файл .py? Кроме того, нужно ли изменять зависимости при ссылках на поля из других модулей в файле __openerp__.py? Спасибо за помощь! –
Кроме того, я получаю сообщение об ошибке «не удалось установить ограничение NOT NULL в столбце« project_id »! Если вы хотите его получить, вы должны обновить записи и выполнить их вручную: ALTER TABLE hr_expense_expense ALTER COLUMN project_id SET NOT NULL " Нужно ли использовать методы GET(), чтобы получить название проекта в форме« Расходы »? Благодарю. –