2 答案
Hi,
x_cmdtycd is the field which you are created in product.template.
Sale form view is connected to the sale.order.line table.
So to get the x_cmdtycd field in this form view it is required to set a related field in the sale.order.line to get the fields from product.template
Pls use the below code
product_template_id = fields.Many2one('product.template')
in the python code, then you can access it by
product_id.product_template_id.x_cmdtycd
instead of product_id.x_cmdtycd
Does it work when create these fields on UI?
I tried with following steps:
1. Create x_code field (Field Name = x_code; Field Type = char) in product.template model
2. Then create x_product_template_id field (Field Name = x_product_template_id; Field Type = many2one; Object Relation = product.template; On delete = Cascade)
3. Add <field name="product_id.x_product_template_id.x_code"/> to Sale Order Lines view
However, I still got this below error when click button Save.
Error while validating constraint
Field `product_id.x_product_template_id.x_code` does not exist
Error context:
View `sale.order.form`
[view_id: 666, xml_id: sale.view_order_form, model: sale.order, parent_id: n/a]
I found the solution to add new custom field of 'product.template' model to sale.order.line view using related field
Here is my solution
class ProductTemplate(models.Model):
_inherit = 'product.template'
cm_code = fields.Char('Common Code', store=True)
class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
product_cm_code = fields.Char('Common Code', related='product_id.cm_code', store=True)
<record model="ir.ui.view" id="sale_order_line_view_inherit">
<field name="name">sale.order.line.view.inherit</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/tree/field[@name='product_id']" position="after">
<field name="product_cm_code"/>
</xpath>
</field>
</record>