class Company(models.Model):
_name = 'crm.company'
sector = fields.Many2one('crm.company.sector')
subsector = fields.Many2one('crm.company.sector')Por otra parte, tengo el modelo 'crm.company.sector':
class CompanySector(models.Model):
_name = 'crm.company.sector'
_parent_store = True
_parent_name = 'parent_id'
name = fields.Char(string='Nombre sector', required=True)
parent_id = fields.Many2one(
'crm.company.sector', 'Sector Padre', ondelete='restrict')
parent_left = fields.Integer('Padre izquierdo', index=True)
parent_right = fields.Integer('Padre derecho', index=True)
child_ids = fields.One2many('crm.company.sector', 'parent_id', 'Sectores hijos')Como veis, el modelo CompanySector tiene una relación de jerarquía padre/hijo, ya que un sector puede tener sectores hijos o no.
El caso, en que en la vista de formulario de creación de una compañía tengo dos combobox, uno para elegir el sector y otro para el subsector:
Lo que yo quiero es que al seleccionar un sector, sólo pueda seleccionar los subsector que son hijos del sector elegido.
Por ejemplo, si el sector Agricultura tiene dos subsectores hijos: Vino y Patatas, yo quiero que en la lista deplegable del campo Subsector me aparezcan sólo las opciones Vino y Patatas.
He intentando fabricar un método en el model Company, que se active cuando cambia el valor del combobox Sector, y que devuelva un dominio para conseguir lo que he comentado antes, pero no me funciona.
@api.one
@api.onchange('sector')
def _onchange_sector(self):
if self.sector:
Sector = self.env['crm.company.sector']
subsectors = Sector.search([('parent_id', "=", self.sector.id)])
domain = {'domain': {'subsector': [('subsector', 'in', subsectors.ids)]}}
return domain
return True
Si alguien me puede ayudar se lo agradecería, llevo horas sin dar con la solución.
--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
@api.multi
@api.onchange('sector')
def _onchange_sector(self):
<field name="subsector" attrs="{'invisible': [('sector', '=', False)]}" domain="[('parent_id', '=', sector)]"/>
<field name="order_line">
<tree string="Purchase Order Lines" editable="bottom">
<field name="product_id"
on_change="onchange_product_id(parent.pricelist_id,product_id,0,False,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,False,False,parent.state,context)"/>
<field name="name"/>
<field name="date_planned" invisible="1"/>
..........Una de las tantas cosas que intente hacer ( sin resultados positivos) es lo siguiente: expandí 'purchase.order' y aguregue el siguiente código:
@api.multi
@api.onchange('solicitudcompra_id')
def set_domain(self):
print "entra"
return {'domain': {'order_line.product_id': [('id', '=', self.solicitudcompra_id.get_products_list() )]}}
--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/aIWaxd5XgWU/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
return {'domain': {'order_line.product_id': [('id', '=', self.solicitudcompra_id.get_products_list() )]}}
--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/aIWaxd5XgWU/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Gracias, puse en practica la recomendación y funciono. Lo que si quite el remplazo que estaba haciendo de la VIEW, porque me traía problemas. Sencillamente el método devolvía bien el contenido pero la vista no surgía ningún cambio.
El 12 de septiembre de 2016, 18:15, Gabriel Davini <gabrielfranciscodavini@gmail.com> escribió:
2016-09-09 16:33 GMT-03:00 Guido Muchiutti <guidoom...@gmail.com>:return {'domain': {'order_line.product_id': [('id', '=', self.solicitudcompra_id.get_products_list() )]}}Sumo a la respuesta de Pedro que el operador en este caso debería ser 'in', no '='.
--Gabriel.
--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/aIWaxd5XgWU/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--Guido--
Has recibido este mensaje porque estás suscrito al grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a openerp-spain-users+unsubscribe...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Usuarios Odoo / OpenERP en España" de Grupos de Google.
Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/openerp-spain-users/aIWaxd5XgWU/unsubscribe.
Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a openerp-spain-users+unsub...@googlegroups.com.