首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenERP如何在many2one字段上使用域过滤器?

OpenERP如何在many2one字段上使用域过滤器?
EN

Stack Overflow用户
提问于 2014-03-14 22:20:06
回答 1查看 9.5K关注 0票数 1

我是OpenERP (v7)的新手,正在编写一个扩展res.partner类的模块,并添加了以下两个字段:

代码语言:javascript
复制
_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列表的字典:

代码语言:javascript
复制
# 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)

对应的字段和视图:

代码语言:javascript
复制
'church_ids': fields.function(_get_church_ids, type="one2many", relation='res.partner', method=True)
<field name="church_ids" invisible="1"/>

我在视图church_id上尝试了以下域,但总是得到相同的错误:

代码语言:javascript
复制
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)]"/>

对如何做到这一点有什么建议吗?我已经花了几天的时间试图解决这个问题,但没有成功。我也尝试过使用相关的领域,但我无法理解如何实现它……非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-17 16:03:31

有人建议我将church_id字段与教堂桌子关联起来,但我只是想指出合作伙伴记录是否是教堂。因此,我只需创建一个名为' is_church‘的布尔值字段,然后使用域来筛选is_church值设置为true的任何合作伙伴记录,如下所示

代码语言:javascript
复制
domain = "[('is_church','=',True)]"

我可以去掉church_id字段,因为它与教堂餐桌无关。

在.py文件中:

代码语言:javascript
复制
_columns{
    'is_church': fields.boolean('Is a Church', domain="[('is_church', '=', True)]")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22407608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档