ODOO 8 on_change

时间:2014-11-03 20:20:54

标签: onchange odoo

请问我遇到新odoo 8 api的问题,我有以下课程

class TypeProcessus(models.Model):
    _name = 'atom.promaintenance.type.processus'
    name = fields.Char()
    id_phases = fields.One2many('atom.promaintenance.phases','id_processus','Liste des Phases')

class Phases(models.Model):
    _name = 'atom.promaintenance.phases'
    name = fields.Char()
    autoriserCommentaire = fields.Boolean()
    autoriserPiecesJointes = fields.Boolean()
    id_processus = fields.Many2one('atom.promaintenance.type.processus')
    parent_id = fields.Many2one('atom.promaintenance.phases','Phase Parent', select=True,      ondelete='cascade')
    commentaire = fields.Text()

    @api.one
    @api.onchange('name')
    def phases_write(self):
      print 'test'

<record model="ir.ui.view" id="atom_promaintenance_type_processus">
<field name="name">atom.promaintenance.type.processus.form</field>
<field name="model">atom.promaintenance.type.processus</field>
<field name="type">form</field>
<field name="arch" type="xml">

        <form string="Type Processus" >
            <sheet>
            <h1>UPDATED</h1>
                <field name="name" />
                    <tree string="note_evaluation_tree" editable="bottom">
                        <field name="id_phases"  />
                    </tree>
            </sheet>
        </form>

</field>
</record>

首先,我的问题是在创建新的Processus和添加阶段时,阶段之间存在关系父子,父级的下拉列表是空的,除非您保存该流程以使其可用。

我设法将onChange事件添加到阶段以将它们保存到数据库但我无法弄清楚如何使用新的api系统保存这些记录,谢谢

2 个答案:

答案 0 :(得分:0)

如果你的意思是我理解的,你需要在XML代码中使用小部件one2many_list,顺便说一下,我认为这是错误的。它应该是这样的:

<record model="ir.ui.view" id="atom_promaintenance_type_processus">
    <field name="name">atom.promaintenance.type.processus.form</field>
    <field name="model">atom.promaintenance.type.processus</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form string="Type Processus" >
            <sheet>
            <h1>UPDATED</h1>
                <field name="name" />
                <field name="id_phases" widget="one2many_list">
                    <tree string="note_evaluation_tree" editable="bottom">
                        <field name="name"/>
                        <field name="autoriserCommentaire"/>
                        <field name="autoriserPiecesJointes"/>
                        <field name="parent_id"/>
                        <field name="commentaire"/>
                    </tree>
                </field>
            </sheet>
        </form>
    </field>
</record>

小部件将允许您为进程添加阶段,然后保存它。

答案 1 :(得分:0)

新API使用self进行所有记录修改。因此,在您的情况下,如果您想更改name,请按以下方式编写:

@api.one
@api.onchange('name')
def onchange_name(self):
    self.name = 'what you want to save'