我想用SQL查詢選擇不同的值,因爲我需要id作爲整數。如何從on_change方法以整數形式獲取id?
我的代碼是:
@api.onchange('qty')
def _on_change_name(self):
logging.warning(self.id)
打印的ID是<openerp.models.NewId object at 0x7fc37d880490>
我怎樣才能從這個id
整數?
我想用SQL查詢選擇不同的值,因爲我需要id作爲整數。如何從on_change方法以整數形式獲取id?
我的代碼是:
@api.onchange('qty')
def _on_change_name(self):
logging.warning(self.id)
打印的ID是<openerp.models.NewId object at 0x7fc37d880490>
我怎樣才能從這個id
整數?
當您在包含計算字段的模型或onchange方法中創建新記錄時,記錄集的記錄將僅位於內存中。當時記錄的ID將是類型openerp.models.NewId
左右的虛擬ID如果您需要使用記錄的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
裝飾器。無論如何,它們都是以單身記錄觸發的 。
要獲得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]
'help(self.id)'或'dir(self.id)'給你提示嗎? – tdelaney
爲什麼你需要這個ID? – ChesuCR