Odoo 记录集为空,无论是否使用修饰符
我试图获取日记账项目中货币的ID,但由于某种原因,我得到了一个错误的布尔值 以下是相关代码:Odoo 记录集为空,无论是否使用修饰符,odoo,odoo-12,Odoo,Odoo 12,我试图获取日记账项目中货币的ID,但由于某种原因,我得到了一个错误的布尔值 以下是相关代码: class JournalItem(models.Model): _name = "account.move.line" _inherit = "account.move.line" def _get_current_rate(self): ... print(self.currency_id.id) #currency_id
class JournalItem(models.Model):
_name = "account.move.line"
_inherit = "account.move.line"
def _get_current_rate(self):
...
print(self.currency_id.id)
#currency_id is a Many2one field of comodel res.currency.
rate = fields.Float(string="Rate", digits=(12, 6),
default=_get_current_rate)
哪些产出:
False
我玩弄了@api.multi和@api.one装饰器,但没有发现任何变化。感觉我错过了一些重要的东西
更新1:
选中时,self
为account.move.line()
这应该类似于account.move.line(1,2,3,4,…)
可能与默认属性有关,会随着我的理解而更新
更新2:
这里的主要问题是缺少货币,即使给定了有效的日记账分录记录编号,这种情况仍然存在
从“帐户”模块:
@api.model
def _get_currency(self):
currency = False
context = self._context or {}
if context.get('default_journal_id', False):
currency = self.env['account.journal'].browse(context['default_journal_id']).currency_id
return currency
这不太可能是问题所在,因为currency_id返回res.currency对象,只有当我进一步研究它时,才会得到错误的返回值
更新3:
似乎在事务创建期间未明确设置的货币设置为False,这可能是我的问题的根源。通过测试并替换为环境默认值来修复。默认值的方法始终具有空记录集。应使用以下方法之一填充值:
- 计算值并存储它(小提示:使用上下文中的日记账分录日期-->
currency.with_context(date=).rate调用currency字段
,因为该字段是计算出来的,并且上下文日期被纳入计算中)rate
- 重写创建/写入并尝试计算速率