odooodoo-8odoo-10odoo-11odoo-14

separate attribute from name products (Odoo 14)


sorry my english. I need a help with a issue I have. I defined a funtion to bring values attributes products however, when I run it, the result is

ValueError: Expected singleton: product.template.attribute.value(9, 25)

will somebody guide me to solve it? I dont know how to go on

class MRPSalesProduc(models.Model):
    _inherit = 'mrp.production'

    product_short_name = fields.Char('Productos')

    @api.model
    def create(self, vals):
        product_short_name = self.env['sale.order'].search([('name', '=', vals[
            'origin'])]).order_line.product_id.product_template_attribute_value.attribute_id
        vals['product_short_name'] = product_short_nam
        rec = super(MRPSalesProduc, self).create(vals)
        return rec

Solution

  • You can use a related many2many field to get product attributes

    Example:

    class MRPSalesProduct(models.Model):
        _inherit = 'mrp.production'
    
        product_template_attribute_value_ids = fields.Many2many(related='product_id.product_template_attribute_value_ids')  
    

    Then use the man2many_tags widget to show the product attributes as tags:

    <field name="product_template_attribute_value_ids" widget="many2many_tags"/>  
    

    Example (Product name):

    class MRPProductsName(models.Model):
        _inherit = 'mrp.production'
    
        products_name = fields.Char(related="product_id.product_tmpl_id.name", string='Productos')