【问题标题】:Adding default filter on tree view - OpenErp Custom module在树视图上添加默认过滤器 - OpenErp 自定义模块
【发布时间】:2013-08-03 16:35:34
【问题描述】:

我需要为我的模块的树视图添加一个默认过滤器。

我在 openerp 中看到了一些代码示例,例如:

<filter
    string="Partner"
    icon="terp-partner"
    domain="[]"
    context="{'group_by':'partner_id'}"
    />

purchase模块中的这个,按partner_id分组为例。

现在,我有一个自定义模块,当您单击它的菜单时,我需要一个“默认”过滤器。

当我浏览模块中的记录时,此过滤器必须显示所有未“过期”或未超过实际日期的记录。

我的自定义模块中有这个字段:

'Fecha_de_Vence': fields.date(
    'Fecha de Vencimiento',
    required=True,
    select=True,
    ),

这是我需要用作此模块中所有记录的过滤器的字段。

现在,在“高级搜索”中,我可以输入例如 Fecha de Vencimiento 不超过 actual date,好吧,我需要将其作为“默认”过滤器。

任何人都可以了解如何在 openerp 的 xml 视图中默认获取此信息?

【问题讨论】:

    标签: python xml filter openerp


    【解决方案1】:

    您需要一个搜索视图,以及 act_window 中的上下文条目:

    <record id="search_xxx_filter" model="ir.ui.view">
        <field name="name">module.class.select</field>
        <field name="model">module.class</field>
        <field name="arch" type="xml">
            <search string="Search xxx">
                <field name="Fecha_de_Vence" string="Fecha de Vencimiento" filter_domain="[(1,'=',1)]"/>
                <separator/>
                <filter string="Fecha de Vencimiento" name="type_date" domain="[(1,'=',1)]" help="..."/>
                <separator/>
                <group expand="0" string="Group By...">
                    <filter string="Assigned to" domain="[]" context="{'group_by' : 'user_id'}" />
                    <filter string="Status" domain="[]" context="{'group_by': 'state'}"/>
                    <filter string="Priority" domain="[]" context="{'group_by': 'priority'}"/>
                </group>
            </search>
        </field>
    </record>
    
    <record id="module_class_act" model="ir.actions.act_window">
        <field name="name">xxx</field>
        <field name="res_model">module.class</field>
        <field name="view_type">form</field>
        <field name="context">{"search_default_type_date":1}</field>
        <field name="view_id" ref="module_class_tree-view"/>
    </record>
    

    我保留了组条目,以便您查看它们的外观,但您需要删除它们或调整它们以匹配您的数据。此外,moduleclass 应替换为您的数据。

    【讨论】:

    • 谢谢,它几乎可以工作,我的意思是,如果我只使用第一个 xml 记录,它会显示过滤器选项中的字段,但如果我使用第二个记录和第一个记录,即:“module_class_act”我不明白我应该在“ref = module_class_tree-view”中输入什么它引发了关于系统中未定义的外部标识符的错误,我输入了“solvencia_solvencia_tree-view”但仍然出现此错误,solvencia 是上的类我正在做这个
    • 一个问题,如果我只是在搜索中“保存”一个自定义过滤器,不会做同样的工作吗?
    • @KristianKoci:是的。将它放在 xml 文件中的好处是用于全新安装。
    • @KristianKoci:ref 指的是之前定义的视图(我没有显示——我的是树视图)。
    【解决方案2】:

    Ethan

    我就是这样解决的,没有你的建议是不可能的:

    <record id="solvencia_search" model="ir.ui.view">
    <field name="name">solvencia.solvencia.select</field>
    <field name="model">solvencia.solvencia</field>
    <field name="arch" type="xml">
        <search string="Solvencias">
            <field name="Fecha_de_Vence" string="Fecha de Vencimiento" filter_domain="[('Fecha_de_Vence','=',((context_today()-datetime.timedelta(days=10)).strftime('%%Y-%%m-%%d')))]"/>
            <separator/>
            <filter string="Fecha de Vencimiento" name="type_date" domain="[('Fecha_de_Vence','=',((context_today()-datetime.timedelta(days=10)).strftime('%%Y-%%m-%%d')))]" help="..."/>
            <separator/>
            <group expand="0" string="Group By...">
                <filter string="Assigned to" domain="[]" context="{'group_by' : 'Fecha_de_Vence'}" />
                <filter string="Status" domain="[]" context="{'group_by': 'Fecha_de_Emision'}"/>
                <filter string="Priority" domain="[]" context="{'group_by': 'nsol'}"/>
            </group>
        </search>
    </field>
    

    还有act_window中的context

    <record id="action_solvencia_solvencia" model="ir.actions.act_window">
        <field name="name">Solvencias</field>
        <field name="res_model">solvencia.solvencia</field>
        <field name="view_type">form</field>
        <field name="context">{"search_default_type_date":1}</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="solvencia_solvencia_tree"/>
            <field name="nsol" />
            <field name="Fecha_de_Emision" />
            <field name="Fecha_de_Vence" />
            <field name="ministerio" />
            <field name="ins_em" />
            <field name="cod_ver" />
            <field name="cadidate" />
            <field name="observa" />
    </record>
    

    完美运行,非常感谢!

    【讨论】:

    • 不客气!不过,您可能希望将过滤器字符串从“分配给”、“状态”和“优先级”更改为有意义的内容。 ;)
    • 是的,哈哈,我正在清理它,但重要的事情现在正在工作,谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多