2014-11-13 2 views
0

У меня есть 2 поля в моем пользовательском модуле:OpenERP получить категории тегов партнера

'originator_id' : fields.many2one("res.partner",string="Originator", required=True), 
'originator_category_ids' : fields.many2many('res.partner.category', 
              'module_category_rel', 
              'module_id', 
              'category_id', 
              'Categories'), 

Я хочу, чтобы установить домен для many2many поля «originator_category_ids» в соответствии с выбранным «ORIGINATOR_ID», который является partner_id. Я написал метод onchange для динамического определения домена:

def get_domain_originator_category_ids(self,cr,uid,ids,originator_id,context=None): 
    if originator_id: 
     obj = self.pool.get('res.partner').browse(cr, uid, originator_id) 
    return {'domain':{'originator_category_ids':[('id','in',obj.category_id)]}} 

Но выше не работает.

Ваша поддержка будет высоко оценена.

ответ

0

Это работает для меня, но это временное решение, пока я не найду лучшего. Решение состоит в зацикливание по категориям и сравнить с выбранным партнером в области partner_ids:

def get_domain_originator_category_ids(self,cr,uid,ids,originator_id,context=None): 

    category_obj = self.pool.get('res.partner.category') 
    category_ids = category_obj.search(cr, uid,[], context=context) 
    res=[] 
    for cateory in category_obj.browse(cr, uid, category_ids, context=context): 
     for partner_id in cateory.partner_ids: 
      if partner_id.id == originator_id: 
       res.append(cateory.id) 

    return {'domain':{'originator_category_ids':[('id','in',res)]}} 

Если вы получаете лучшее решение, пожалуйста, опубликовать его.

Смежные вопросы