0

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

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

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

4

1 回答 1

0

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

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

干杯,kalariya hardik for,Tech-receptives

于 2013-10-25T15:24:27.653 回答