如何在现有模块中将自定义模块搜索添加到“高级搜索”?

时间:2013-10-25 12:50:59

标签: python openerp

我创建了一个模块来跟踪自定义硬件锁定设备(加密狗)。一切都很好,除了我试图弄清楚如何添加将自定义模块添加到高级过滤器的功能,以便我们可以搜索具有与之关联的特定系列加密狗的客户。

这是我的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>

在查看包含此内容的各种其他模块之后,我似乎无法弄清楚我应该添加的内容/其他内容,以使我的新模块显示在高级搜索下拉列表中。

1 个答案:

答案 0 :(得分:0)

如果您希望通过dongle_count字段进行搜索,则必须将其值存储在数据库中。 为了将函数字段值存储在数据库中,您需要在Eg的fields属性中定义store = True参数。

'dongle_count':fields.function(_ dongle_count,string ='#of Dongles',type ='integer',store = True)

欢呼声, 卡拉里亚哈迪克 为,技术-receptives