Odoo 10: добавьте дополнительные поля в форму продукта
Я хочу добавить пару дополнительных полей в форму продукта, сразу после 'standard_price'.
Я создал представление, которое наследуется от "product.product_template_form_view", и добавил туда свои поля:
<field name="standard_price" position="after">
<field name="my_field" />
</field>
Затем я перезапускаю odoo, обновляя модуль, но я не вижу свои новые поля при вызове формы продукта.
Поля появляются в модели базы данных (также создаются унаследованные модели), но не в пользовательском интерфейсе.
Что мне здесь не хватает?
3 ответа
Проверьте эти вещи:
- Наследуется от правильной базовой формы
product.template.common.form
- Убедитесь, что вы ищете правильную форму для product.template (Product), а не product.product (Вариант продукта).
- Вы видите поле ввода без заголовка в режиме редактирования? Если это так, вы можете иметь нарушенную структуру на уровне HTML. Следующая пуля решит это.
- Поле Standard_price имеет уникальную html-структуру, потому что с ним может быть связана единица измерения (uom). Попробуйте подключиться к простому полю или используйте контейнер div standard_price_uom для подключения, см. Код шаблона ниже.
Код шаблона для рабочего представления с новым полем после стандартного div_price_uom div:
<div name='standard_price_uom' position="after">
<field name="my_field" />
</div>
Если это не помогает, пожалуйста, предоставьте полное определение вида.
Убедитесь, что вы используете правильную модель. использование product.template
вместо product.product
,
<record id="product_template_form" model ="ir.ui.view">
<field name="name">product.template.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view" />
<field name="arch" type="xml">
<field name="standard_price" position="after">
<field name="my_field"/>
</field>
</field>
</record>
...
class ProductTemplate(models.Model):
_inherit = "product.template"
my_field = fields.Char()
Я тестировал это в Odoo 12.
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_product_template_common_form_inherit" model="ir.ui.view">
<field name="name">product.template.common.form.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='standard_price_uom']" position="after">
<label for="my_field" string="My Field"/>
<div>
<field name="my_field"/>
</div>
</xpath>
</field>
</record>
</odoo>
Убедитесь, что вы добавили свой XML-файл в модуль __manifest__.py
файл. Odoo извлекает XML только из файлов, которые вы ему сообщаете.
Вы можете увидеть примеры этого на любых основных модулях. Увидеть sale/__manifest__.py
для примера.
На вашем модуле это будет примерно так:
{
...
‘data’: [
‘views/form/form_product.xml’,
]
...
}