过滤one2many_list小部件和上下文传递

时间:2016-08-30 10:29:06

标签: openerp

我有2个one2many字段,由one2many_list小部件表示。字段是:

documents_applicant_1 = fields.One2many(comodel_name='application.documents',
documents_applicant_2 = fields.One2many(comodel_name='application.documents',
                                        inverse_name='application_id')
                            <group>
                                <field name="documents_applicant_1" widget="one2many_list"
                                    nolabel="1">
                                    <tree string="Variants" editable="bottom">
                                        <field name="name" />
                                        <field name="document_raw_data" id="document_raw_data_applicant_1" />
                                        <!-- <field name="category" /> -->
                                    </tree>
                                </field>
                            </group>
                            <group>
                                <field name="documents_applicant_2" widget="one2many_list"
                                    nolabel="1">
                                    <tree string="Variants" editable="bottom">
                                        <field name="name" />
                                        <field name="document_raw_data" id="document_raw_data_applicant_2" />
                                        <!-- <field name="category" /> -->
                                    </tree>
                                </field>
                            </group>

当用户使用这些字段添加记录时,根据用于添加记录的列表,我想传递上下文。我的布局如下:

enter image description here

现在,除了想要在我的用户将记录添加到左侧列表和右侧列表时传递不同的上下文时,我想对两个列表上显示的记录应用动态过滤器。

如何实现上述目标? 我不想写javascript而不是使用现有的功能

1 个答案:

答案 0 :(得分:1)

您可以将所需的域添加到Python代码中的One2many字段中(使用不可用的XML)。然后,在XML中,您可以使用前缀default_添加上下文。

  

我举了一个例子:

     

假设您想要documents_applicant_1字段来添加记录   其类别为&#39; <&#39; documents_applicant_2字段用于添加   类别为&#39; B&#39;

的记录      

然后你可以写:

     

Python代码

documents_applicant_1 = fields.One2many(
    comodel_name='application.documents',
    inverse_name='application_id',
    domain=[('category' '=', 'A')],
)
documents_applicant_2 = fields.One2many(
    comodel_name='application.documents',
    inverse_name='application_id',
    domain=[('category' '=', 'B')],
)
     

XML代码

<group>
    <field name="documents_applicant_1" widget="one2many_list"
        nolabel="1" context={'default_category': 'A', }>
        <tree string="Variants" editable="bottom">
            <field name="name" />
            <field name="document_raw_data" id="document_raw_data_applicant_1" />
            <field name="category" />
        </tree>
    </field>
</group>
<group>
    <field name="documents_applicant_2" widget="one2many_list"
        nolabel="1" context={'default_category': 'B', }>
        <tree string="Variants" editable="bottom">
            <field name="name" />
            <field name="document_raw_data" id="document_raw_data_applicant_2" />
            <field name="category" />
        </tree>
    </field>
</group>

我不知道这是不是你想要的,我希望它可以帮助你。