代码之家  ›  专栏  ›  技术社区  ›  Pestana

奥多打开新窗口

  •  1
  • Pestana  · 技术社区  · 6 年前

    我想在Odoo11的CRM opportunities中创建一个按钮。我要打开一个窗口,其中包含此机会的所有邮件(Model mail.message)

    这是我的结构:

    • /奥多/插件/测试
      • __初始年
      • 模型
        • 测试.py

    这是我的代码:

    {
    'name': 'test',
    'version': '2.0',
    'category': 'Sales',
    'sequence': 5,
    'summary': 'test',
    'description': "",
    'website': 'https://test.net',
    'depends': [
        'crm'
    ],
    'data': [
    ],
    'demo': [
    ],
    'css': [],
    'installable': True,
    'application': True,
    'auto_install': False,
    }
    

    /odoo/插件/测试/初始化

    from . import models
    

    /odoo/addons/test/models/初始化

    from . import test
    

    /odoo/addons/test/models/test.py

    from odoo import models, fields
    
    
    class test_test(models.Model):
        _inherit = 'crm.lead'
    
        @api.multi
        def test_test(self):
            return {
                'name': 'test_test',
                'res_model': 'mail.message',
                'view_type': 'list',
                'view_mode': 'tree,list',
                'type': 'ir.actions.act_window',
                'target': 'inline'
            }
    

    客户关系管理.lead.form.opportunity

     <button name='%(test_test)d' string="test" type="action" />
    

    我安装了我的应用程序,但按钮不起作用,也没有显示任何错误。我无法在UI中看到我的动作。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Atul Arvind    6 年前

    要从视图中调用函数,需要像下面这样定义对象类型按钮。

    <button name='test_test' string="test" type="object" />
    

    它将调用函数 test_test 在你的模型中 crm.lead ,(确保您的按钮位于 客户关系管理领导 模型视图。)

    你需要改变你的功能如下

    @api.multi
    def test_test(self):
        return {
            'name': 'test_test',
            'res_model': 'mail.message',
            'view_type': 'list',
            'view_mode': 'tree,list',
            'type': 'ir.actions.act_window',
            'target': 'new' # will open a popup with mail.message list
        }
    

    推荐文章