如何使用 odoo 10 中的瞬态模型(向导)将数据插入 table
How to insert data to a table using transient model(wizard) in odoo 10
我有一个名为 Vehicle 的模型,我创建了一个向导 od_add_new_vehicle。
在向导的 xml 视图中,我创建了一个动作。
我如何 link 使用向导的车辆模型以便我可以永久保存数据
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 {}
以下是从向导 update/insert 数据的简单方法。
- 在表单视图页脚添加按钮
- 按钮类型将是 object 以在 .py side
中调用 python 函数
- 使用active_ids更新记录集。
例如:
<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
我有一个名为 Vehicle 的模型,我创建了一个向导 od_add_new_vehicle。 在向导的 xml 视图中,我创建了一个动作。 我如何 link 使用向导的车辆模型以便我可以永久保存数据
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 {}
以下是从向导 update/insert 数据的简单方法。
- 在表单视图页脚添加按钮
- 按钮类型将是 object 以在 .py side 中调用 python 函数
- 使用active_ids更新记录集。
例如:
<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