como llenar una vista en el browser

51 views
Skip to first unread message

Moises Velez Avila

unread,
Jan 18, 2017, 8:16:54 PM1/18/17
to odoo-Argentina - Preguntas y respuestas para personalizadores
Hola Grupo tengo la siguente inquietud

Tengo una clase que lleva un campo many2many de otro modelo(a), este genera una tabla intermedia con los ids.

class autos_catalogo_version(models.Model):
_name= 'autos.catalogo.version'
       accesorios= fields.Many2many('autos.catalogo.accesorios','autos_rel_accesorio_versiones','versiones_a_id','accesorios_v_id',string = 'Accesorios',required = False, help='Accesorios')

y tengo otro modelo en donde mando llamar a version.

class autos_proceso_compras(models.Model):
    _name = 'autos.proceso.compras'
  _inherits = {
        'autos.vin': 'autos_vin',
    }

donde autos. vin tiene heredado versiones, 

lo que quiero es que cuando seleccione una version, se filtren los accesorios que estan en su relacion de la tabla que se creo del campo many2many del campo accesorios del modelo autos.catalogo.version.

y se pinten los accesorios en la pantalla, como hacer un insert a latabla en memoria.



Daniel Blanco

unread,
Jan 27, 2017, 4:44:07 PM1/27/17
to odoo-Argentina - Preguntas y respuestas para personalizadores
No se entiende bien lo que queres hacer... querés pintar accesorios? o queres que se filtren solo los accesorios correspondientes a la versión?

en el modelo de los accesorios, cómo identificas cuales son las versiones que usan esos accesorios? está un poco incompleta la info que veo en pantalla me parece.

Moises Velez Avila

unread,
Jan 30, 2017, 2:28:58 PM1/30/17
to odoo-ar...@googlegroups.com
Hola Daniel lo que quiero hacer es lo siguiente.

Tengo un modelo version en donde tiene un campo many2many que trae los datos de otro modelo que es accesorios.

Modelo Version:
  accesorios= fields.Many2many('autos.catalogo.accesorios','autos_rel_accesorio_versiones','versiones_a_id','accesorios_v_id',string = 'Accesorios',required = False, help='Accesorios')

Los datos se guardan en la tabla "autos_rel_accesorio_version"

Luego tengo un modelo Compras que hace referencia a otro modelo que este modelo trae referencia del modelo version:
class autos_compras_datos_vin(models.Model):
_name = 'autos.compras.datos.vin'
vin = fields.Char('Vin', size=17, required=True)
marca = fields.Many2one('autos.catalogo.marcas', 'Marca', required=True)
aniomodelo = fields.Integer('Año Modelo', size=4, required=True)
tipoauto = fields.Many2one('autos.catalogo.tipo.auto', 'Tipo Auto', required=True)
version = fields.Many2one('autos.catalogo.version', 'Version', required=True)

Luego en el modelo compras traigo varios _ inherints en uno de ellos trae al modelo anterior:
class autos_proceso_compras(models.Model):
_name = 'autos.proceso.compras'
    _description = 'Compra de Autos nuevos a la planta y concesionarios'
_inherits = {
'autos.vin': 'autos_vin',
'autos.compras.datos.vin': 'datosvin_id',
'autos.compras.documentos.extranjero': 'extranjero_id',
'autos.compras.precios': 'precios_id',
'autos.compras.datos.compra': 'datoscompra_id',
'autos.compras.datos.equipo': 'equipo_id',
'autos.compras.datos.informacion': 'informacion_id',
}

y dentro de este modelo traigo el campo donde se va a guardar los datos de los accesorios que contiene dicha version:
accesorios = fields.Many2many('autos.catalogo.accesorios', 'autos_rel_catalogo_accesorio',
'catalogo_ac_id', 'accesorio_a_id', string='Accesorios', required=False,
help='Accesorios')

Entonces lo que quiero hacer es que cuando seleccionen la version me filtre los accesorios correspondientes a la version 
que ya fue formada con anterioridad y que filtre los accesorios que se guardaron en la tabla de relaccion 
'autos_rel_accesorio_versiones', de tal forma que cuando la persona seleccione la version ya sabe que accesorios trae.

Entonces quiero que los pinte en la tabla que forma odoo al realizar un many2many te anexo unas imagenes.

Mi duda es como cambio el domain en compras del campo many2many diciendole que filtre los accesorios que estan en la tabla
'autos_rel_accesorio_versiones' mi duda es tambien si esa tabla donde se trae en la memoria cuando se hace la herencia o como

ejemplo de lo que creo deberia de ser
 domain="[('compras.accesorios.id','=','autos_rel_accesorio_versiones.id)]" es algo de lo que estoy buscando hacer pero no se
como se haga cuando un many2many depende de la relacion de la tabla de otro many2many

Te anexo una imagenes:


Saludos y gracias por la ayuda.


--
Recuerda siempre poner la mayor cantidad de datos para que se entienda bien que necesitas y que respondes. Algunos errores comunes:
 
- Siempre mencionar en que versión de odoo trabajas.
- Siempre mencionar si el servidor esta en LINUX o en windows y en que versión.
- No alcanza con colocar el debug del error, debes indicar que necesitas que haga el código.
- Comparte tu código en un servidor abierto como Github, Launchpad u otro.
- Si haces un manual, tutorial o algo de interés comunal, trata de usar google docs.
 
Tu tiempo es tan valioso como el de cualquiera de la comunidad. Aquí se valora el aporte que hagas. Cuanto mas ayudes mas ayuda recibirás.
 
Nuestras normas mínimas de convivencia puede leerlas en https://groups.google.com/d/forum/odoo-argentina?hl=es-ES
---
Has recibido este mensaje porque estás suscrito a un tema del grupo "odoo-Argentina - Preguntas y respuestas para personalizadores" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/odoo-argentina/0Nl_3kUHYF4/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a odoo-argentina+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a odoo-argentina@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

cambio version.PNG
version.PNG

Saul Palenzuela Hdez

unread,
Mar 16, 2017, 1:40:29 PM3/16/17
to odoo-Argentina - Preguntas y respuestas para personalizadores
Hola Moises, tengo el mismo problema. Encontraste alguna solución?

Saludos

Moises Velez Avila

unread,
Mar 16, 2017, 3:13:44 PM3/16/17
to odoo-Argentina - Preguntas y respuestas para personalizadores
Hola Saul la forma como lo hice fue con un metodo dentro de la clase:
Aqui el codigo:

#Esta Linea es para que odoo detecte la seleccion o el cambio en el campo id_version
@api.onchange('id_version') 
#Aqui le pasamos SELF que es la clase
    def my_onchange_version(self,):
# Esta variables es donde se van a agregar los accesorios correspondientes de acuerdo a la version
        list_accesorios_ids = []
#Comprobamos que id_version si traiga dato
        if self.id_version:
# Recorremos los accesorios que concuerden con los accesorios de version
            for accesorio in self.id_version.accesorios:
#agregamos los id de los accesorios correspondientes a la version
                list_accesorios_ids.append(accesorio.id)
# Con esta linea actualizamos en browser los datos que correspondan a los accesorios con la version
            self.update({'accesorios': [(6, 0, list_accesorios_ids)]})

Espero te sirva.

Saludos,

Saul Palenzuela Hdez

unread,
Mar 21, 2017, 11:53:21 AM3/21/17
to odoo-Argentina - Preguntas y respuestas para personalizadores
Moisés, muchas gracias por la respuesta. Saludos
Reply all
Reply to author
Forward
0 new messages