我创建了一个模块来跟踪自定义硬件锁定设备(加密狗)。一切都很好,除了我试图弄清楚如何添加将自定义模块添加到高级过滤器的功能,以便我们可以搜索具有与之关联的特定系列加密狗的客户。
这是我的res_parter.py
from osv import fields, osv
class res_partner(osv.osv):
""" Inherits partner and adds CRM information in the partner form """
_inherit = 'res.partner'
def _dongle_count(self, cr, uid, ids, field_name, arg, context=None):
res = dict(map(lambda x: (x,0), ids))
# The current user may not have access rights for sale orders
try:
for partner in self.browse(cr, uid, ids, context):
res[partner.id] = len(partner.sale_order_ids)
except:
pass
return res
_columns = {
'dongle_count': fields.function(_dongle_count, string='# of Dongles', type='integer'),
'dongle_ids': fields.one2many('dongle', 'partner_id', 'Dongles')
}
res_partner()
和我的res_partner_view.xml
<?xml version="1.0"?>
<openerp>
<data>
<record id="act_res_partner_2_dongle" model="ir.actions.act_window">
<field name="name">Dongles</field>
<field name="res_model">dongle</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context"></field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a dongle for this customer.
</p>
</field>
</record>
<!-- Partner kanban view inhert -->
<record id="res_partner_view_buttons" model="ir.ui.view">
<field name="name">res.partner.view.buttons</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="priority" eval="20"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='buttons']" position="inside">
<button name="%(act_res_partner_2_dongle)d" type="action"
string="Dongles"
attrs="{'invisible': [('customer', '=', False)]}"/>
</xpath>
</field>
</record>
</data>
</openerp>
在查看包含此内容的各种其他模块之后,我似乎无法弄清楚我应该添加的内容/其他内容,以使我的新模块显示在高级搜索下拉列表中。
答案 0 :(得分:0)
如果您希望通过dongle_count字段进行搜索,则必须将其值存储在数据库中。 为了将函数字段值存储在数据库中,您需要在Eg的fields属性中定义store = True参数。
'dongle_count':fields.function(_ dongle_count,string ='#of Dongles',type ='integer',store = True)
欢呼声, 卡拉里亚哈迪克 为,技术-receptives