【发布时间】:2019-11-28 09:53:41
【问题描述】:
我正在尝试获取日记项目中的货币 ID,但由于某种原因,我得到了一个 False 布尔值。
以下是相关代码:
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 对象,只有当我进一步研究它时,我才会得到 False 返回值。
更新 3:
似乎在创建交易期间未明确设置的货币设置为 False,这可能是我麻烦的根源。通过对其进行测试并替换为环境的默认值来修复。
【问题讨论】: