我是OpenERP(v7)的新手,我正在编写一个扩展res.partner类的模块,并添加了以下两个字段:
_columns = {
'member_ids': fields.one2many('res.partner', 'church_id', 'Members', domain=[('active','=',True)]),
'church_id': fields.many2one('res.partner', 'Church', domain="[('is_company','=',True)]")
}
我想做的是,当用户打开church_id视图时,它只显示教堂的合作伙伴。目前,它显示所有公司,因为我无法正确设置域名。教会是具有与教会类别相对应的类别id(res.partner.category)的公司。我尝试使用功能字段解决我的问题,但我只是遇到了一些错误。以下函数正确返回包含当前用户ID和教会ID列表的字典:
# Returns : {'user_id': [church_id1, church_id2, ...]}
def _get_church_ids(self, cr, uid, ids, field_name, arg, context=None):
sql_req = """
SELECT R.partner_id
FROM res_partner_res_partner_category_rel R
LEFT JOIN res_partner_category C ON ( R.category_id = C.id)
WHERE C.active = TRUE AND UPPER(C.name) = 'CHURCH'
"""
cr.execute(sql_req)
sql_res = cr.fetchall()
return dict.fromkeys(ids, sql_res)
对应的字段和视图:
'church_ids': fields.function(_get_church_ids, type="one2many", relation='res.partner', method=True)
<field name="church_ids" invisible="1"/>
我在view_id视图上尝试了以下域名,我总是得到同样的错误:
Uncaught Error: Expected "]", got "(name)"
<field name="church_id" attrs="{'invisible': [('is_company','=',True)]} domain="[('id','in',[church for church in church_ids[id]])]"/>
<field name="church_id" attrs="{'invisible': [('is_company','=',True)]} domain="[('id','in',[church[0] for church in church_ids)]"/>
有关如何执行此操作的任何建议?我花了几天时间试图搞清楚但没有运气。我也尝试用相关领域来做这件事,但我无法理解如何实现它......非常感谢你的帮助!
答案 0 :(得分:1)
有人建议我,church_id字段应与教堂桌子相关,但我只是想表明伴侣记录是否是教会。因此,我可以创建一个名为&#39; is_church&#39;作为布尔值,然后使用域过滤任何合作伙伴记录,其中is_church值设置为true,如下所示
domain = "[('is_church','=',True)]"
我可以摆脱church_id领域,因为它与教堂桌子无关。
在.py文件中:
_columns{
'is_church': fields.boolean('Is a Church', domain="[('is_church', '=', True)]")
}