2014-11-03 85 views
2

请我面对萨姆问题与新odoo 8 API,我有以下类ODOO 8 on_change

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> 

首先,我的问题是创建一个新的突未时,添加阶段,有一个在阶段和父母保持空白的下拉列表之间关联父子代,除非你保存了进程使它们可用。

我设法onChange事件添加到阶段他们坚持到数据库,但我无法弄清楚如何保存这些记录与新的API系统,谢谢

+0

你不能使用onchange方法保存记录。我真的不明白你想在这里做什么。如果您想要更改记录的保存/创建方式,如果您需要创建/更新某些相关记录,则必须重写“create”和/或“write”方法或在方法中调用它们。 – Andrius 2015-02-24 09:41:56

+0

我无法找到你的问题,onChange()和商店记录之间的关系是什么?所以你告诉最新的问题 – Virbhadrasinh 2015-04-23 06:01:07

回答

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> 

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

0

新API使用self进行所有记录修改。所以在你的情况下,如果你想更改name,请这样写:

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