2014-11-03 10 views
2

Пожалуйста, я столкнулся Somes проблемы с новым odoo 8 апи, у меня есть следующие классы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> 

Прежде всего моя проблема при создании нового отростка и добавления фазы, существует parent parent child между фазами и выпадающим списком для родителя остаются пустыми, если u не сохранит процесс, чтобы сделать их доступными.

я сумел добавить OnChange события фаз сохраняться их в базу данных, но я не могу понять, как сохранить эти записи с новой системой апи, спасибо

+0

Вы не можете использовать onchange методы для сохранения записей. Я действительно не понимаю, что вы хотите здесь сделать. Если вы хотите изменить способ сохранения/создания записей, вы должны переопределить методы 'create' и/или' write' или вызвать их в своих методах, если вам нужно создать/обновить некоторые связанные записи. – Andrius

+0

Я не могу найти вашу проблему, какова связь между onChange() и хранимыми записями? так что вы говорите, что на самом деле проблема – Virbhadrasinh

ответ

0

Если вы имеете в виду, что я понимаю, ты нужно использовать виджет one2many_list в XML-коде, который, кстати, я считаю неправильным. Это должно быть что-то вроде этого:

<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> 

Виджет позволит вам добавить фазы для отростка, а затем сохранить его.

0

Новый API использует self для всех изменений записи. Поэтому в вашем случае, если вы хотите изменить name, напишите вот так:

@api.one 
@api.onchange('name') 
def onchange_name(self): 
    self.name = 'what you want to save' 
Смежные вопросы