继承TransientModel并有两个视图(website.config.settings)

时间:2016-11-12 18:40:24

标签: openerp odoo-8 odoo-9 odoo-view

我正在尝试继承网站设置菜单并有两个视图。 website.config.settings是models.TransientModel

当我继承并使用新的menuitem进行查看时,它会覆盖以前的视图。喜欢 - 现在有两个视图,我定义的新记录名为Website Event Settings。当我点击它时,它会加载新的修改后的视图,但是当我点击现有的“设置”菜单时,它什么也没有显示。

总之,现有的网站设置菜单不起作用,新菜单也可以。我需要他们两个。

我使用的py代码和记录视图如下 -

class cofair_website_design_config(models.TransientModel):
    _name = 'website.config.settings'
    _inherit = 'website.config.settings'

    event_title = fields.Char(related='website_id.event_title', string='Event Title')

XML:

<record id="view_website_event_config_settings" model="ir.ui.view">
        <field name="name">Website Event Settings</field>
        <field name="model">website.config.settings</field>
        <field name="arch" type="xml">
            <form class="oe_form_configuration">
                <header>
                    <button string="Apply" type="object" name="execute" class="oe_highlight"/>
                    <button string="Cancel" type="object" name="cancel" class="oe_link"/>
                </header>
                <div>
                    <group string="Event Page Section">
                        <group>
                            <field name="event_title_color"/>
                        </group>
                    </group>
                </div>
            </form>
        </field>
</record>

<record id="action_website_event_configuration" model="ir.actions.act_window">
    <field name="name">Website Event Settings</field>
    <field name="res_model">website.config.settings</field>
    <field name="view_mode">form</field>
    <field name="target">inline</field>
    <field name="view_id" ref="view_website_event_config_settings"/>
</record>

<menuitem id="menu_website_event_settings" parent="website.menu_website_configuration" name="Website Event Settings" action="action_website_event_configuration"/>

2 个答案:

答案 0 :(得分:2)

我没有重命名模块(导致关系错误),而是找到了解决方法。我继承了主要设置并在其中放置了一个视图ID并使用menuitem调用它 -

<!-- Bring settings menu out -->
<record id="website.action_website_configuration" model="ir.actions.act_window">
    <field name="name">Website Settings</field>
    <field name="res_model">website.config.settings</field>
    <field name="view_mode">form</field>
    <field name="target">inline</field>
    <field name="view_id" ref="website.view_website_config_settings"/>
</record>

<menuitem id="website.menu_website_website_settings" parent="website.menu_website_configuration" name="Website Admin" action="website.action_website_configuration"/>

然后我调用了我的记录动作并加载了视图和动作。另一个问题是我必须显示website_id以显示特定网站的值,或者瞬态模型将始终为空。

答案 1 :(得分:1)

将模型定义中的_name属性更改为其他属性,并同时修改xml。

class cofair_website_design_config(models.TransientModel):
    _name = 'something.else'
    _inherit = 'website.config.settings'

    event_title = fields.Char(related='website_id.event_title', string='Event Title')

ir.ui.view

<field name="model">something.else</field>


ir.actions.act_window

<field name="res_model">something.else</field>

这应该将website.config.settings中的所有字段和方法复制到新模型something.else,并将其与website.config.settings

分开