我的自定义模块中有2个字段:
'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 :(得分: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)]}}
如果您有更好的解决方案,请发布。