我想用sql查询选择不同的值,因为我需要id作为整数。
我的代码是:
@api.onchange('qty')
def _on_change_name(self):
logging.warning(self.id)
打印的ID为<openerp.models.NewId object at 0x7fc37d880490>
如何从此id
获取整数?
答案 0 :(得分:4)
在具有计算字段的模型中或在onchange方法中创建新记录时,记录集的记录将仅在内存中。那时记录的id将是openerp.models.NewId
因此,如果您需要在代码中使用记录ID(例如,对于SQL查询),您应该检查它是否可用:
if isinstance(current_record.id, models.NewId):
# do your stuff
<强>更新即可。 Zoellner有更好的答案here
查看onchange() line 4971 and following。 Odoo正在创建一个缓存/内存的新记录,之后会再创建 onchange完成后,用提供的数据更新自己的缓存。
如果您确实需要使用ID或其他字段
<record>._origin.<field>
。注意:不要在onchange方法上使用
api.one
装饰器。他们是 无论如何都触发了单身人士的记录。
答案 1 :(得分:1)
要获得last id
我已经执行了一个sql查询来在创建时选择最新create_date
的id,然后我将其存储起来。
self._cr.execute("SELECT id FROM table ORDER BY create_date DESC LIMIT 1")
id = self._cr.fetchone()[0]