Odoo 12: Ошибка ключа: ‘ir.значения’

#odoo #odoo-12

#odoo #odoo-12

Вопрос:

Я пытаюсь создать новый контакт в приложении odoo, но он показывает мне эту ошибку :

 KeyError: 'ir.values'
  

Проблема связана с этой функцией.

  class ResPartner(models.Model):
_inherit = 'res.partner'

def _default_credit_limit(self):
    return self.env['ir.values'].get_default('account.config.settings', 'credit_limit')
  

Я не понимаю проблему

Не могли бы вы мне помочь, пожалуйста

Комментарии:

1. какую версию Odoo вы используете?

2. спасибо за ваш ответ. Я использую odoo 12

Ответ №1:

Ошибка ключа: ‘ir.значения’

Если вы запустите self.env['ir.values'] на Odoo 12, вы получите указанную выше ошибку, потому что ir.values модель не существует в Odoo 12.

ir.values Модель была удалена и заменена на ir.default . Например:

 self.env['ir.default'].get('sale.order', 'sale_order_template_id')
  

Вы можете увидеть соответствующий файл в коде ядра Odoo или в коммите, куда была добавлена большая часть этой модели.

Ответ №2:

Вы уверены, что этот параметр вообще существует? Я не знаю наверняка, но не смог его найти, я знаю, что в Odoo 8 он существовал. Помимо того факта, что я не думаю, что он больше не существует: account.config.settings не существует на 100%, потому что модель настроек была переработана в res.config.settings .

На самом деле поле partner credit_limit тоже исчезло. Поэтому, если вы хотите использовать его и иметь значение по умолчанию вне кода, используйте ir.default для желаемого поведения.

Комментарии:

1. привет, @CZoellner, спасибо за ваш ответ. Я не могу использовать объект [‘ir.default’], потому что у него нет атрибута ‘get_default’

2. Вы, очевидно, должны изучить модель самостоятельно. 😉 Вам также необходимо установить значение по умолчанию самостоятельно, оно не существует для credit_limit