基本理念: 在我的自定义many2many表(user_id,partner_id)中未定义为VIP用户的OpenERP用户的客户端表单视图中隐藏少数字段
我已经做过的事情:
在res.partner表单视图中
<field name="vip_ids" widget="many2many_tags" placeholder="VIP users..."/>
我的自定义模块为res.partner模块增加了许多关系:
from openerp.osv import orm, fields
from osv import fields, osv
class res_partner_users_vip_rel2(osv.osv):
_inherit = 'res.partner'
_description = "VIP status for partner (users)"
_columns = {
'vip_ids': fields.many2many(
'res.users',
'res_partner_users_vip_rel2',
'partner_id',
'users_id',
'VIP status'),
}
res_partner_users_vip_rel2()
在表单视图中,我可以在新创建的字段中成功保存多个用户,但是我仍然隐藏在我的many2many关系中未定义的用户的其他字段。
据我了解,我需要使用 attrs属性,但我不明白如何将它与many2many关系一起使用。
这不起作用:
<field name="mobile" attrs="{'invisible': [('uid','in', vip_ids)]}"/>
<field name="fax" attrs="{'invisible': [('uid','in', vip_ids)]}"/>
<field name="email" widget="email" attrs="{'invisible': [('uid','in', vip_ids)]}"/>
非常感谢任何建议:)
答案 0 :(得分:0)
感谢OpenERP用户aharoen的回答:
查看:
<record id="view_0001" model="ir.ui.view">
<field name="name">XXXXXXX</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<form string="XXXXXXXXXX" version="7.0">
<group col="4" colspan="2">
<field name="ids_count"/>
<field name="mobile" attrs="{'invisible': [('ids_count','=', 0)]}"/>
<field name="fax" attrs="{'invisible': [('ids_count','=', 0)]}"/>
<field name="email" widget="email" attrs="{'invisible': [('ids_count','=',0)]}"/>
</group>
<field name="vip_ids"></field>
</form>
</field>
</record>
控制器:
from openerp.osv import fields, osv
class res_partner_users_vip_rel2(osv.osv):
_inherit = 'res.partner'
_description = "VIP status for partner (users)"
def getcount(self, cr, uid,ids,name,arg,context):
res={}
sql="""
SELECT partner_id id, count(*) cnt FROM res_partner_users_vip_rel2
WHERE partner_id = """+str(ids[0])+""" GROUP BY partner_id """
cr.execute(sql)
res.update(dict(cr.fetchall()))
if res!={}:
return res
return {ids[0]:0}
_columns = {
'ids_count':fields.function(getcount,type="integer",string='Count'),
'vip_ids': fields.many2many(
'res.users',
'res_partner_users_vip_rel2',
'partner_id',
'users_id',
'VIP status'),
}