es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregar valores en un campo One2many en el evento onchange.

Estoy tratando de agregar valores en mi campo one2many onchange. Intenté usar [(0,0, {values})] pero no sucedió nada. ¿Alguna idea de cómo implementarlo?

custom_line_ids = fields.One2many('mrp.production', 'product_id', 'Custom Line')
@api.onchange('product_id')
    def add_custom_line_ids(self):
        mrp = self.env['mrp.productions'].search([])
        result = []

vals = {
        'sequence': self.sequence,
        'name': self.name,
        'product_id': self.product_id,
        'date_planned_start': self.date_planned_start,
        'state': self.state,
}
self.update({'custom_line_ids':[(0, 0, vals)]})
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar valores en un campo One2many utilizando el método onchange, se puede utilizar la sintaxis [(0, 0, {values})]. Sin embargo, en este caso parece que el método update no se está llamando correctamente. Prueba modificar tu código tal y como se muestra a continuación:

    custom_line_ids = fields.One2many('mrp.production', 'product_id', 'Custom Line')
    
    @api.onchange('product_id')
    def add_custom_line_ids(self):
        mrp = self.env['mrp.productions'].search([])
        result = []
    
        vals = {
                'sequence': self.sequence,
                'name': self.name,
                'product_id': self.product_id.id, # utiliza el campo id
                'date_planned_start': self.date_planned_start,
                'state': self.state,
            }
        self.custom_line_ids = [(0, 0, vals)] # asigna el valor en lugar de utilizar update
    

    Ten en cuenta que estamos utilizando el campo id del product_id en lugar del objeto en sí en el diccionario vals. Además, en lugar de utilizar el método update, simplemente estamos asignando el valor al campo custom_line_ids.

    ¡Espero que esto ayude!

Comments are closed.