當(dāng)我使用該search方法并創(chuàng)建一個(gè)查找不存在的 id 的記錄集時(shí),結(jié)果是預(yù)期的空記錄集:>>> self.env['account.invoice'].search([('id', 'in', [23232323123123123, ])])account.invoice()但是如果我對(duì)browse方法做同樣的事情,結(jié)果是一個(gè)具有該 id 的記錄集,但實(shí)際上該記錄不存在:>>> o = self.env['account.invoice'].browse([23232323123123123])>>> oaccount.invoice(23232323123123123,)>>> o.id23232323123123123>>> o.numberTraceback (most recent call last):File "/path/to/odoo/odoo/fields.py", line 937, in __get__ value = record.env.cache.get(record, self)File "/path/to/odoo/odoo/api.py", line 960, in get value = self._data[field][record.id][key]KeyError: (<odoo.sql_db.Cursor object at 0x7f4d2985e9e8>, 1)During handling of the above exception, another exception occurred:Traceback (most recent call last):File "/usr/lib/python3.5/code.py", line 91, in runcode exec(code, self.locals)File "<console>", line 1, in <module>File "/path/to/odoo/odoo/fields.py", line 937, in __get__ value = record.env.cache.get(record, self)File "/path/to/odoo/odoo/api.py", line 961, in get return value.get() if isinstance(value, SpecialValue) else valueFile "/path/to/odoo/odoo/api.py", line 993, in getter raise exceptionFile "/usr/lib/python3.5/code.py", line 91, in runcode exec(code, self.locals)File "<console>", line 1, in <module>File "/path/to/odoo/odoo/fields.py", line 937, in __get__ value = record.env.cache.get(record, self)File "/path/to/odoo/odoo/api.py", line 961, in get return value.get() if isinstance(value, SpecialValue) else valueFile "/path/to/odoo/odoo/api.py", line 993, in getter raise exceptionFile "/usr/lib/python3.5/code.py", line 91, in runcode exec(code, self.locals)這是文檔中的解釋?zhuān)韩@取數(shù)據(jù)庫(kù) ID 或 ID 列表并返回記錄集,當(dāng)從 Odoo 外部獲取記錄 ID(例如通過(guò)外部系統(tǒng)往返)或調(diào)用舊 API 中的方法時(shí)很有用這是正常行為嗎?我覺(jué)得這種方法沒(méi)用我是否必須browse事先檢查數(shù)據(jù)庫(kù)中是否存在a中使用的所有記錄?
為什么“瀏覽”方法使用不存在的 id 返回錯(cuò)誤的記錄集?
繁華開(kāi)滿(mǎn)天機(jī)
2021-09-25 21:59:06