Welcome!

This community is for professionals and enthusiasts of our products and services. Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

1

Cómo poblar con datos una relación many2many en Odoo

por
Osmar Leyet
en 20/08/20 21:12 48 vistas

Hola. Tengo dos archivos con cargas de datos para dos modelos (a y b) en mi bd Odoo 12, los cuales se han procesado sin problemas. Pero el modelo 'a' tiene una relación m2m con el modelo 'b' y debo poblar desde otro archivo esa relación entre ambos. Teniendo en cuenta que la tabla que se obtiene de esa relación m2m no tiene un modelo desde donde pueda 'importar'.... hay alguna forma de lograr esto?

Gracias de antemano.  


1

En este caso como no se puede directamente importar un fichero tal como harías con otro modelo, puedes resolver el problema de la siguiente forma:
1- Crea la siguiente función:


# -*- coding: utf-8 -*-
import xlrd
from odoo import models, api
from odoo.modules.module import get_module_path

class Dummy1(models.Model):
    _name = 'dummy.model1'

    @api.model
    def _f_m2m(self):
        path = '{}/data/<tu_fichero.xls>'.format(get_module_path('<tu_modulo>'))
        f = open(path, "rb")
        file = f.read()
        doc = xlrd.open_workbook(file_contents=file, on_demand=True)
        hoja = doc.sheet_by_name('data')
        p_set = self.env['<modelo_conrelaciondirecta_m2m>']
        # El fichero acá básicamente tendrá dos columnas con los ids relacionados
        for fila in hoja.get_rows():
                field1 = str(fila[0].value)
                field2 = str(fila[1].value)
                if field1:
                    rec_id = p_set.browse(field1).write({'<campo_m2m_ids>': [(4, field2)]})

2- Llama esta función desde un .xml de la siguiente forma:

<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">
<function model="dummy.model1" name="_f_m2m"/>
</odoo>


Su respuesta

Por favor trate de dar una respuesta sustancial. Si desea comentar sobre la pregunta o respuesta, utilice la herramienta de comentarios. Recuerde que siempre puede revisar sus respuestas - no hay necesidad de contestar la misma pregunta dos veces. Además, no olvide valorar - realmente ayuda a seleccionar las mejores preguntas y respuestas

Mantener informado

Acerca de esta comunidad

Esta comunidad es para profesionales y entusiastas de nuestros productos y servicios, compartir los mejores contenidos y nuevas ideas de marketing, construir su perfil profesional y mejorar el mercado para todos. Lea las directrices

Herramientas de las preguntas

1 seguidor(es)

Estadísticas

Preguntado: 20/08/20 21:12
Visto: 48 veces
Última actualización: 20/08/20 22:47