Я заметил, что некоторые пользовательские модули, которые я разрабатываю, могут быть установлены в базах данных с записями, в то время как другие выдают сообщение KeyError, если база данных не пуста (нет записей). Обычно ошибки появляются, когда модуль содержит вычисляемые поля. Итак, кто-нибудь знает, почему это происходит? и как должен выглядеть мой код, чтобы избежать подобных ошибок? пример вычисляемого поля, которое выдает эти ошибки, выглядит следующим образом:
from odoo import models, fields, api
from num2words import num2words
Class InheritingAccountMove(models.Model):
_inherit = 'account.move'
total_amount_text = fields.Char(string='Total', compute='_compute_total_amount_text', store=True)
@api.depends('amount_total')
def _compute_total_amount_text(self):
lang_code = self.env.context.get('lang') or self.env.user.lang
language = self.env['res.lang'].search([('iso_code', '=', lang_code)])
separator = language.read()[0]['decimal_point']
for record in self:
decimal_separator = separator
user_language = lang_code[:2]
amount = record.amount_total
amount_list = str(amount).split(decimal_separator)
amount_first_part = num2words(int(amount_list[0]), lang=user_language).title() + ' '
amount_second_part = amount_list[1]
if len(amount_second_part) == 0:
amount_text = amount_first_part + '00/100'
elif len(amount_second_part) < 2:
amount_text = amount_first_part + amount_second_part + '0/100'
else:
amount_text = amount_first_part + amount_second_part[:2] + '/100'
record.total_amount_text = amount_text