Openerp获取合作伙伴类别标签

Openerp获取合作伙伴类别标签,openerp,categories,openerp-7,Openerp,Categories,Openerp 7,我的自定义模块中有两个字段: 'originator_id' : fields.many2one("res.partner",string="Originator", required=True), 'originator_category_ids' : fields.many2many('res.partner.category', 'module_category_rel',

我的自定义模块中有两个字段:

'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'),
我想根据所选的“发起人\u id”(合作伙伴\u id)为多个字段“发起人\u类别\u 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)]}}
但上述方法不起作用


非常感谢您的支持。

这对我来说很有效,但在我找到更好的解决方案之前,这只是一个暂时的解决方案。解决方案包括在类别上循环,并在partner_ID字段中与选定的合作伙伴进行比较:

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)]}}
如果你有更好的解决方案,请发布