Odoo使用刚刚创建的记录的id

时间:2017-01-18 13:11:27

标签: openerp

我需要创建公司并立即创建与该公司绑定的联系人:

vals = {...}
company = self.env['res.partner'].create(vals)
vals = {'company_id': company.id, ...}
contact = self.env['res.partner'].create(vals)

但是odoo说:DETAIL:键(company_id)=(49)不在表“res_company”中。

交易尚未提交(正如我所想)。 那么我怎样才能使用刚刚创建的记录的字段?

在ir.cron中启动的方法:

这样称呼的方法:

<record model="ir.cron" id="ir_cron_load_data">
    <field name="name">Load</field>
    <field eval="False" name="active" />
    <field name="interval_number">24</field>
    <field name="interval_type">hours</field>
    <field name="numbercall">-1</field>
    <field name="priority">100</field>
    <field name="doall" eval="False"/>
    <field name="model" eval="'sap_contacts'"/>
    <field name="function" eval="'action_load_data'"/>
    <field name="args" eval="'()'"/>
</record>

1 个答案:

答案 0 :(得分:2)

vals = {...}
company = self.env['res.partner'].create(vals)
vals = {'company_id': company.id, ...}
contact = self.env['res.partner'].create(vals)

company_id字段是res_partnerres_company表之间的关系字段。您尝试使用val在res_partner上创建记录,vals有一个company_id键,其中包含company.id作为其值。您拥有的company.id是您在res.partner表上创建的新记录的ID。

您必须在res.company表中创建公司:

company = self.env['res.company'].create(some_vals)

然后获取该公司的ID company.id