Odoo 10:向产品表单添加额外字段
Odoo 10: Add extra fields to the product form
我想在产品表单中添加几个额外的字段,就在 'standard_price' 之后。
我创建了一个继承自 "product.product_template_form_view" 的视图并在那里添加了我的字段:
<field name="standard_price" position="after">
<field name="my_field" />
</field>
然后我重新启动 odoo 更新模块,但是当我调用产品表单时我没有看到我的新字段。
字段出现在数据库模型上(也创建继承模型),但不出现在用户界面上。
我在这里缺少什么?
检查这些东西:
- 继承自正确的基本形式
product.template.common.form
- 确保您查看的是 product.template(产品)的正确表格,而不是 product.product(产品变体)。
- 您在编辑模式下是否看到没有标题的输入字段?如果是这种情况,您可能在 html 级别破坏了结构。下一个项目符号将解决这个问题。
- Standard_price 字段具有独特的 html 结构,因为它可以连接计量单位 (uom)。尝试连接到简单字段或使用容器 div standard_price_uom 进行连接,请参阅下面的模板代码。
在 standard_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()
确保您已将 XML 文件添加到模块的 __manifest__.py
文件中。 Odoo 仅从您指定的文件中提取 XML。
您可以在任何核心模块上看到这方面的示例。有关示例,请参见 sale/__manifest__.py
。
在你的模块上,它会是这样的:
{
...
‘data’: [
‘views/form/form_product.xml’,
]
...
}
我已经在 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>
我想在产品表单中添加几个额外的字段,就在 'standard_price' 之后。
我创建了一个继承自 "product.product_template_form_view" 的视图并在那里添加了我的字段:
<field name="standard_price" position="after">
<field name="my_field" />
</field>
然后我重新启动 odoo 更新模块,但是当我调用产品表单时我没有看到我的新字段。
字段出现在数据库模型上(也创建继承模型),但不出现在用户界面上。
我在这里缺少什么?
检查这些东西:
- 继承自正确的基本形式
product.template.common.form
- 确保您查看的是 product.template(产品)的正确表格,而不是 product.product(产品变体)。
- 您在编辑模式下是否看到没有标题的输入字段?如果是这种情况,您可能在 html 级别破坏了结构。下一个项目符号将解决这个问题。
- Standard_price 字段具有独特的 html 结构,因为它可以连接计量单位 (uom)。尝试连接到简单字段或使用容器 div standard_price_uom 进行连接,请参阅下面的模板代码。
在 standard_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()
确保您已将 XML 文件添加到模块的 __manifest__.py
文件中。 Odoo 仅从您指定的文件中提取 XML。
您可以在任何核心模块上看到这方面的示例。有关示例,请参见 sale/__manifest__.py
。
在你的模块上,它会是这样的:
{
...
‘data’: [
‘views/form/form_product.xml’,
]
...
}
我已经在 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>