Many2one res.partner Фильтр в модуле CRM - PullRequest
5 голосов
/ 22 марта 2019

Я пытаюсь применить группу по клиентам в разделе возможностей модуля CRM.

Я хочу сгруппировать клиентов / возможности по industry.

Я использовал подобный код в res.partner и не могу разобраться с этим!.

models.py

x_industry_id = fields.Many2one(string="Industry", comodel_name="res.partner")

views.xml

 <record id="view_crm_case_opportunities_filter_inherit" model="ir.ui.view">
    <field name="name">crm.lead.search.opportunity</field>
        <field name="model">crm.lead</field>
    <field name="inherit_id" ref="crm.view_crm_case_opportunities_filter"/>
    <field name="arch" type="xml">

     <xpath expr="//search" position="inside">

        <filter name="x_industry_id" string="Industry" context="{'group_by':'x_industry_id'}" domain="[('industry_id','!=', False)]"/>

       </xpath>

    </field>
</record>

У меня такая же проблема с фильтрами и другими группами, использующими тот же метод.

Они просто не выглядят как обычно!

Как применить группы и фильтры к различным моделям

1 Ответ

5 голосов
/ 01 апреля 2019

Удалите параметр domain и поместите фильтр в тег group тега search, так как вы пытаетесь создать группу , а не фильтр домена :

<record id="view_crm_case_opportunities_filter_inherit" model="ir.ui.view">
    <field name="name">crm.lead.search.opportunity</field>
    <field name="model">crm.lead</field>
    <field name="inherit_id" ref="crm.view_crm_case_opportunities_filter"/>
    <field name="arch" type="xml">
        <xpath expr="//search/group" position="inside">
            <filter name="x_industry_id" string="Industry" context="{'group_by':'x_industry_id'}"/>
        </xpath>
    </field>
</record>     

В search представлениях есть три вида фильтров:

  • Фильтр по тексту : позволяет пользователям сравнивать поле с некоторым текстом и находить те записи, которые соответствуют выражению. Они используют тег field и такие параметры, как filter_domain или operator, среди прочего (например, <field name="lost_reason"/>).

  • Фильтр по домену : разрешить пользователям щелкать созданный вами фильтр и видеть только записи, соответствующие указанному вами домену. Они используют тег filter и параметр domain, среди прочего (например: <filter string="My Pipeline" name="assigned_to_me" domain="[('user_id', '=', uid)]" help="Opportunities that are assigned to me"/>).

  • Фильтр по группе : разрешить пользователям группировать записи по полю. Они находятся внутри тега group в поисковом представлении, среди прочих используются тег filter и параметр context (с ключом group_by) (например, <filter string="Salesperson" context="{'group_by':'user_id'}"/>).

Так что я думаю, что вы смешиваете два вида фильтров. Вот почему вы должны удалить domain.

И, конечно, проверьте, что вы добавили зависимость crm в файл __manifest__.py и после этого перезапустили службу Odoo (обновляя ваш модуль).

...