无论装饰器如何,记录集都是空的
Recordset is empty regardless of decorator
我正在尝试获取日记项目中的货币 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, ...)
可能与默认属性有关,我想通了会更新。
更新二:
这里的主要问题是缺少货币,即使提供了有效的日记帐分录记录编号,它仍然存在
来自 'account' 模块:
@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 return 是一个 res.currency 对象,只有当我进一步研究它时,我才得到 False return 值。
更新 3:
似乎在交易创建期间未明确设置的货币被设置为 False,这可能是我麻烦的根源。通过对其进行测试并替换为环境的默认设置来修复。
默认值的方法总是有一个空记录集。您应该通过以下方式之一填写该值:
计算值并存储它(小提示:在上下文中使用日记账分录日期调用货币字段 rate
--> currency.with_context(date=<journal_entry_date>).rate
--> 因为这个字段被计算并且上下文日期被纳入计算)
覆盖 create/write 并尝试计算速率
我正在尝试获取日记项目中的货币 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, ...)
可能与默认属性有关,我想通了会更新。
更新二:
这里的主要问题是缺少货币,即使提供了有效的日记帐分录记录编号,它仍然存在
来自 'account' 模块:
@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 return 是一个 res.currency 对象,只有当我进一步研究它时,我才得到 False return 值。
更新 3:
似乎在交易创建期间未明确设置的货币被设置为 False,这可能是我麻烦的根源。通过对其进行测试并替换为环境的默认设置来修复。
默认值的方法总是有一个空记录集。您应该通过以下方式之一填写该值:
计算值并存储它(小提示:在上下文中使用日记账分录日期调用货币字段
rate
-->currency.with_context(date=<journal_entry_date>).rate
--> 因为这个字段被计算并且上下文日期被纳入计算)覆盖 create/write 并尝试计算速率