Вычислить логическое поле с store = True не искать в Odoo11 - PullRequest
0 голосов
/ 30 октября 2018

Ниже приведен код моего логического поля, а не домена (поиск) в базе данных. Это работа, когда я делаю этот метод зависит. Но у меня есть более 1000 записей, так как домен в действии для всех записей одновременно?

**Python Code:**

@api.multi
def _compute_opportunity_count111(self):
    value = {}
    for rec in self:
        operator = 'child_of' if rec.is_company else '='  # the opportunity count should counts the opportunities of this company and all its contacts
        won_list = rec.env['crm.lead'].search(
            [('partner_id', operator, rec.id), ('stage_id.probability', '=', 100)]).ids
        if won_list:
            rec.won_customer = True
            value.update(won_customer=rec.won_customer)

won_customer = fields.Boolean(compute='_compute_opportunity_count111', store=True)

**XML Code:**
<record id="base.action_partner_form" model="ir.actions.act_window">
    <field name="name">Customers</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">res.partner</field>
    <field name="view_type">form</field>
    <field name="view_mode">kanban,tree,form</field>
    <field name="context">{"search_default_customer":1}</field>
    <field name="domain">[('won_customer', '=', True)]</field>
    <field name="search_view_id" ref="base.view_res_partner_filter"/>
    <field name="help" type="html">
        <p class="oe_view_nocontent_create">
            Click to add a contact in your address book.
        </p>
        <p>
            Odoo helps you easily track all activities related to
            a customer: discussions, history of business opportunities,
            documents, etc.
        </p>
    </field>
</record>

Заранее спасибо

1 Ответ

0 голосов
/ 31 октября 2018

Вы не должны использовать api.multi, но api.depends -> это обеспечивает повторный вызов метода при изменении соответствующих полей.

Кажется, вы зависите от is_company -> @api.depends('is_company')

Кроме того, из того, что я прочитал, ваш value диктат бесполезен -> вы можете удалить его

...