OpenERP 从后端设置默认过滤器

OpenERP Set default filter from back end

在 openucat 模型中单击菜单项后,我想加载按状态过滤的时间表记录,其中状态等于推迟。 - 使用 xml 或 python 代码。 & 这是我的 xml 观点。

<menuitem id="menu_op_timetable" 
          parent="menu_op_timetable_main" 
          name="View Time Table"
          sequence="20" 
          action="act_open_op_timetable_view" />

<record id="view_op_timetable_form" model="ir.ui.view">
    <field name="name">op.timetable.form</field>
        <field name="model">op.timetable</field>
        <field name="priority" eval="8" />
        <field name="arch" type="xml">
            <form string="Time Table" version="7.0">
                <header>
                    <button name="action_complete" string="Complete" type="workflow" icon="gtk-apply" states="planned,postponed"/>
                    <button name="action_postponed" string="Postponed" type="workflow" icon="gtk-jump-to" states="planned,postponed"/>
                    <button name="action_cancel" string="Cancel" type="workflow" icon="gtk-cancel" states="planned,postponed"/>
                            <!--class="oe_button oe_form_button oe_highlight oe_form_visible" -->
                    <field name="state" widget="statusbar" readonly="True" statusbar_colors='{"r":"red"}'
                            statusbar_visible="planned,postponed,completed,cancelled"/>
                </header>
                <sheet>
                    <separator colspan="4" string="Time Table" />
                    <group colspan="4" col="4">
                        <field name="faculty_id" />
                        <field name="standard_id" />
                        <field name="division_id" />
                        <field name="period_id" />
                        <field name="subject_id" />
                        <field name="classroom_id" />
                        <field name="start_datetime" />
                        <field name="end_datetime" />
                        <field name="type"/>
                    </group>
                </sheet>
            </form>
        </field>
</record>

首先需要在对象的搜索视图过滤器中添加过滤器op.timetable like

<filter string="Postponed" name="state_postponed" domain="[('state','=','postponed')]" icon="terp-document-new"/>

操作 ID 为 act_open_op_timetable_view 并编辑并添加默认过滤器,如

<field name="context">{'search_default_state_postponed': 1}</field>

希望这能解决您的问题。

编辑:

如果您想限制我们需要在域中使用的其他状态记录。

操作 ID 为 act_open_op_timetable_view 并在域下方编辑

<field name="domain">[('state','=','postponed')]</field>
<field name="context">{}</field>