Python OpenERP如何在多个域上使用域筛选器?

Python OpenERP如何在多个域上使用域筛选器?,python,filter,openerp,many-to-one,openerp-7,Python,Filter,Openerp,Many To One,Openerp 7,我是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'

我是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视图时,它只显示属于church的合作伙伴。目前,它显示所有公司,因为我无法正确设置域。教堂是具有与教堂类别对应的类别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"/>
'church\u id':fields.function(\u get\u church\u id,type=“one2many”,relation='res.partner',method=True)
我在视图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)]"/>
Uncaught错误:应为“]”,得到“(名称)”

有什么建议吗?我已经花了好几天的时间想弄明白,但是运气不好。我也试着在相关领域做这件事,但我不知道如何做到。。。非常感谢你的帮助

有人建议我church_id字段应该与church表相关,但我只是想指出合作伙伴记录是否为church。因此,我可以创建一个名为“is_church”的字段作为布尔值,然后使用一个域来筛选is_church值设置为true的任何合作伙伴记录,如下所示

domain = "[('is_church','=',True)]"
我可以去掉church_id字段,因为它与church表无关

在.py文件中:

_columns{
    'is_church': fields.boolean('Is a Church', domain="[('is_church', '=', True)]")
}