gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:51 24 4
gpt4 key购买 nike

我是 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 View 时,它只显示属于教堂的合作伙伴。目前,它显示所有公司,因为我无法正确设置域。教会是一个公司,其类别 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)

对应的字段和 View :

'church_ids': fields.function(_get_church_ids, type="one2many", relation='res.partner', method=True)
<field name="church_ids" invisible="1"/>

我在 View Church_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)]"/>

关于如何做到这一点有什么建议吗?我已经花了几天时间试图弄清楚但没有运气。我也尝试在相关领域进行此操作,但我不明白如何实现它......非常感谢您的帮助!

最佳答案

有人建议我 Church_id 字段应该与教堂表相关,但我只是想表明合作伙伴记录是否是教堂。因此,我可以创建一个名为“is_church”的 bool 值字段,然后使用域来过滤 is_church 值设置为 true 的任何合作伙伴记录,如下所示

domain = "[('is_church','=',True)]"

我可以去掉 Church_id 字段,因为它与教堂 table 无关。

在 .py 文件中:

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

关于python - OpenERP 如何在many2one字段上使用域过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com