2017-03-07 6 views
1

Vehicleというモデルがあり、ウィザードod_add_new_vehicleを作成しました。 ウィザードのxmlビューで、私はアクションを作成しました。 私は、次の永続的にodooで過渡モデル(ウィザード)を使用してテーブルにデータを挿入する方法10

class Vehicle(models.Model): 
    _name = 'transport.vehicle' 

    name = fields.Char(string="Name", required=True) 
    description = fields.Text() 
    reg_date = fields.Date() 
    department = fields.Char() 
    available = fields.Boolean() 


class od_add_new_vehicle(models.TransientModel): 
    _name = 'od.add.new.vehicle' 
    _description = 'Add new vehicle' 
    name = fields.Char('vehicle name') 
    description = fields.Text('Description') 
    reg_date = fields.Date('Reg date') 
    department = fields.Char('Department') 
    available = fields.Boolean('Available') 

    def _default_veh(self): 
     return self.env['transport.vehicle'].browse(self._context.get('active_ids')) 

    v_id = fields.Many2one('transport.vehicle', string="Vehicle ref", required=True, default=_default_veh) 

    @api.multi 
    def od_add_book(self): 
     self.v_id.name = self.name 
     self.v_id.description = self.description 
     self.v_id.reg_date = self.reg_date 
     self.v_id.department = self.department 
     self.v_id.available = self.available 
     self.v_id.member_id = self.member_id 
     return {} 

答えて

1

をデータを保存できるように、どのように私は、ウィザードを使用して車両モデルをリンクするには、ウィザードからのデータを挿入/更新するための簡単な方法です。

  • ボタンの種類がレコードセット更新するの.py側に
  • 使用active_idsをPythonの関数を呼び出すことオブジェクトになりますフォームビューフッターにボタンを追加します。たとえば、

:ご返信用

<footer> 
    <button name="insert_data" string="Insert/Update data" type="object" 
     class="oe_highlight"/> 
    or 
    <button string="Cancel" class="oe_link" special="cancel" /> 
</footer> 

の.py側の機能

@api.multi 
def insert_data(self): 

    for record in self.env['target.table.name'].browse(self._context.get('active_ids', [])): 

     #here you can access target table fields using *record* variable 

     record.field_name = wizard.field_name 

    return True 
+0

Odedraのおかげ。私は私の質問で言及したコードで試して、それは私に次のエラー "ValueError:期待シングルトン"を与えます。私の要件は新しい行を挿入することです – PsP

+0

コードを確認してください。どこか* Many2one *フィールドが*複数のIDを取得する*したがって、レコードセットIDが1つしかないことを確認してください。 –

関連する問題