odoo开发笔记 -- many2one搜索更多增加默认过滤条件

 没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板:

改进方法(增加默认过滤条件,显示指定模型下的内容):

class IrCloudReport(models.Model):
    _inherit = 'test.aaa'

    cr_template_no = fields.Char(string="模板号")  # 唯一模板号
    saas_domain_name = fields.Char(string="企业域名")


class DecEXReportTempSelectWizard(models.TransientModel):
    _name = 'test.bbb'
    _description = 'Cloud Report Selection'

    model = fields.Char(string="模型名")
    cr_template_id = fields.Many2one(comodel_name="test.aaa", string="报表模板ID",
                                     copy=False, required=True,
                                     domain=lambda self: [('model', '=', self._context.get('res_model'))],)  # 多对一字段 关联报表模型

即:上方增加domain表达式:domain=lambda self: [('model', '=', self._context.get('res_model'))]

光写表达式还没有用,需要给当前模型cr_template_id字段所在的视图中传入上下文:

<record id="xxxxxxxxxx" model="ir.ui.view">
    <field name="name">cus xxxxxxxx</field>
    <field name="model">test.xxxxxxx</field>
    <field name="inherit_id"
           ref="XXXXXXXXXXXXXXXXX"/>
    <field name="arch" type="xml">
        <xpath expr="//header/button[@id='test.xxxxxxxxxx']" position="after">
            <button name="%(test.xxxxxxxx)d"
                    string="测试"
                    type="action" class="btn-primary"
                    context="{'res_model': '您自己需要过滤的模型名'}"/>
        </xpath>
    </field>
</record>

 

posted @ 2018-11-26 14:52  hello-Jesson  阅读(4111)  评论(0编辑  收藏  举报