Python 以一种形式创建记录时自动创建另一个模型的记录-Odoo 10
我的orm中有两种型号,即苹果服务和苹果。我想要的是我想要创建苹果的记录,并自动写入一些字段。例如,我们可以从销售订单创建发票,当创建发票时,发票的某些字段会自动生成,并写入记录,与销售订单中的字段相同 我所做的是: 我的服务模式Python 以一种形式创建记录时自动创建另一个模型的记录-Odoo 10,python,openerp,odoo-10,Python,Openerp,Odoo 10,我的orm中有两种型号,即苹果服务和苹果。我想要的是我想要创建苹果的记录,并自动写入一些字段。例如,我们可以从销售订单创建发票,当创建发票时,发票的某些字段会自动生成,并写入记录,与销售订单中的字段相同 我所做的是: 我的服务模式 class _service(models.Model): _name = 'se.service' _rec_name = "service_name" name = fields.Char( 'Reference', copy=False, readon
class _service(models.Model):
_name = 'se.service'
_rec_name = "service_name"
name = fields.Char(
'Reference', copy=False, readonly=True, default=lambda x: _('New'))
service_name = fields.Char("Service Name", required=True)
service_department = fields.Many2one('hr.department', "Department Name", required=True, help="Department Name of employee")
service_description = fields.Text("Description", required=True)
service_remarks = fields.Text("Remarks")
service_methodology = fields.Html(string="Methodology")
service_id = fields.One2many('se.objective', 'service_id', string="Objectives", required=True)
@api.model
def create(self, valuees):
if valuees.get('name', _('New')) == _('New'):
valuees['name'] = self.env['ir.sequence'].next_by_code('se.service') or _('New')
return super(_service, self).create(valuees)
def _create_apple(self):
inv_obj = self.env['se.apple']
self.ensure_one()
se = _service
invoice = inv_obj.create({
'apple_name': se.service_name,
'apple_description': se.service_description,
'apple_remarks': se.service_remarks
})
return invoice
def create_apple(self):
self._create_apple()
我的苹果模型
class _apple(models.Model):
_name = 'se.apple'
apple_name = fields.Char("Apple Name")
apple_description = fields.Text("Remarks Apple")
apple_remarks = fields.Text("Remarks Apple")
我的服务表格:
<header>
<button name="create_apple" string="Create Apple" type="object" class="btn-primary"/>
</header>
如果我这样做:
1.我在se服务中创建了一个表单。
2.我保存表格。
3.我点击创建苹果按钮
我期望:
1.在se.apple中自动创建的记录
2.记录将自动生成apple_名称、apple_描述和apple_备注,因为我已经填写了se.service。您在self中有当前的服务记录,因此您可以直接使用它。 尝试此更新的方法
def _create_apple(self):
inv_obj = self.env['se.apple']
self.ensure_one()
invoice = inv_obj.create({
'apple_name': self.service_name,
'apple_description': self.service_description,
'apple_remarks': self.service_remarks
})
return invoice
那么,问题是什么呢?我写的代码不起作用。我想知道我遗漏了什么,或者我想知道我写方法的方式,这个方法实际上在我的方式下工作。你有任何错误吗?我已经创建了四个类。第一个是se.service,它与se.OBJECT有一个多方面的关系;第二个是se.apple,它与se.t有一个多方面的关系。通过单击se.service模型中的“创建”按钮,我可以从se.service创建se.OBJECT的记录。但是,我无法将se.service中se.objective的记录集传输到se.apple中的se.t。我知道这是可以做到的,因为我看到从销售订单创建发票时也做了同样的事情。销售订单中添加的产品在account.invoice中转移。sale.order.line>>sale.order-->account.invoice>>account.invoice.line。