使用创建按钮(odoo)直接打开“one2many表单视图”

时间:2016-05-30 13:32:41

标签: python forms openerp openerp-7

我的代码很简单。

蟒:

class Test(osv.osv):
    _name= 'test.name'
    _columns= {
        'name' = fields.char('Name')
}

的xml:

<record model="ir.ui.view" id="test_form_view">
    <field name="name">Test</field>
    <field name="model">test.name</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form version="7.0">
            <sheet>
                <group>
                    <field name="name"/>
                </group>
            </sheet>
        </form>
    </field>
</record>

我想打开表单视图,与单击one2many字段(使用按钮save&closesave&newdiscard)相同,这样我就可以点击“保存”和“新建”按钮直接添加新条目而不关闭并重新打开新表单。

有没有机会这样做? (无需手动创建具有自定义按钮的表单)

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法覆盖create之类的ORM方法以使其调用其他形式,因此我建议您尝试以下方法:

创建一个类似于你的新瞬态模型 模型test.name,这样:

class YourAbstractModel(osv.TransientModel):
    _name= 'your.abstract.model'
    _columns= {
        'name': fields.char('Name')
    }

    def create_test_name(self, cr, uid, ids, context):
        wizard_info = self.browse(cr, uid, ids)[0]
        vals = {
            'name': wizard_info.name or False
        }
        self.pool.get('test.name').create(cr, uid, vals, context=context)
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'your.abstract.model',
            'view_mode': 'form',
            'view_type': 'form',
            'views': [(False, 'form')],
            'target': 'new',
        }

并创建自己的观点:

<record model="ir.ui.view" id="your_abstract_model_form_view">
    <field name="name">Your abstract model form</field>
    <field name="model">your.abstract.model</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form version="7.0">
            <sheet>
                <group>
                    <field name="name"/>
                </group>
                <footer>
                    <button name="create_test_name" string="Create" type="object" class="oe_highlight"/> or 
                    <button special="cancel" string="Cancel" class="oe_link"/>
                </footer>
            </sheet>
        </form>
    </field>
</record>

然后修改menuitem,显示你在问题中写的视图,并调用我在这里写的新视图。

如果我理解了这个问题,我想你可以管理你的目的。