没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板:
改进方法(增加默认过滤条件,显示指定模型下的内容):
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>