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='ドングルの数', type='integer',store=True)

乾杯、kalariya hardik for、Tech-receptives

于 2013-10-25T15:24:27.653 に答える