代码之家  ›  专栏  ›  技术社区  ›  user3606682

默认按两个字段分组树视图Odoo 10

  •  1
  • user3606682  · 技术社区  · 7 年前

    我正在尝试在列表视图中设置默认分组方式。 如果我使用下面的一行,它可以很好地处理一个字段。

    <field name="context">{'group_by':'sector_id'}</field>
    

    然而,我的要求是,默认情况下,分组为两个级别,部门和自然。所以我尝试了下面的代码,但没有发生任何事情,也没有错误。

    行动:

    <record id="program_activity_action_window_chairman" model="ir.actions.act_window">
        <field name="name">Activity</field>
        <field name="res_model">program.activity</field>
        <field name="view_ids" eval="[(5,0,0),(0,0,{'view_mode':'tree','view_id':ref('view_program_activity_tree')}),(0,0,{'view_mode':'form','view_id':ref('view_program_activity_form_chairman')})]"/>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form,graph</field>
        <field name="domain">[('state', 'in', ['chairman_approve','done'])]</field>
        <!--<field name="context">{'default_state': 'chairman_approve'}</field>-->
        <!--<field name="context">{'group_by':'sector_id'}</field>-->
        <field name="context">{'search_default_group_sector_id': 1,'search_default_group_nature': 1}</field>
    
        <field name="help" type="html">
            <p class="oe_view_nocontent_create">
                Create a new Program Activity.
            </p>
        </field>
    </record>
    

    <record id="view_program_activity_tree" model="ir.ui.view">
        <field name="name">program.activity.tree</field>
        <field name="model">program.activity</field>
        <field name="arch" type="xml">
    
            <tree string="Program Activity" colors="green:type_id[1] == 'REVENUE'">
                <field name="department_id"/>
                <field name="sector_id"/>
                <field name="major_program_id"/>
                <field name="minor_program_id"/>
                <field name="name"/>
                <field name="code"/>
                <field name="type_id"/>
                <field name="weight_from_minor"/>
                <field name="total_planned" sum="Total Planned"/>
                <field name="total_actual" sum="Total Actual"/>
                <field name="total_diff_amount" sum="Total Difference Amount"/>
                <field name="total_diff_percentage" sum="Total Difference Percentage %"/>
            </tree>
        </field>
    </record>
    

    非常感谢您的帮助或任何建议。谢谢

    2 回复  |  直到 7 年前
        1
  •  7
  •   CZoellner    7 年前

    如果您想要分组方式而不使用搜索视图过滤器(forvas方法),只需在上下文中执行多分组方式:

    <field name="context">{'group_by':['sector_id', 'nature']}</field>
    

    字段列表中的顺序很重要。

        2
  •  4
  •   forvas    7 年前

    您的代码似乎还可以,您必须做的是添加 nature 字段添加到树视图,当然,这两个字段都必须是树视图的搜索视图中的过滤器 view_program_activity_tree :

    <field name="sector_id"/>
    <field name="nature" invisible="1"/>
    

    搜索视图

    <filter string="Sector"
        name="group_sector_id"
        domain="[]"
        context="{'group_by':'sector_id'}"
        help="Grouping by sector"/>
    <filter string="Nature"
        name="group_nature"
        domain="[]"
        context="{'group_by':'nature'}"
        help="Grouping by nature"/>
    

    search_view_id 字段,因此继承和修改模型的默认搜索视图 program.activity . 如果它不存在,请为它创建一个新的搜索视图,并在操作中添加指向它的链接。

    <field name="search_view_id" ref="your_search_view_xml_id"/>
    
    推荐文章