在 Odoo 11 中扩展模型的状态

Extend States for Model in Odoo 11

我想扩展 mrp.production 模型的 "state" 列。我在 https://www.odoo.com/de_DE/forum/how-to/developers-13/how-to-extend-fields-selection-options-without-overwriting-them-21529 中找到了一个示例,但它似乎在 odoo 11 中不起作用。

__init__ 签名更改为 __init__(self, pool, cr)(从我看到的引用 model.__init__(pool, cr) 的错误跟踪中猜测)

from odoo import models, fields
import logging

_logger = logging.getLogger(__name__)

class mrp_production(models.Model):
   _inherit = 'mrp.production'

   def __init__(self, pool, cr):
       super(mrp_production, self).__init__(pool, cr)
       states = self._columns['state'].Selection

       _logger.debug('extend state of mrp.production')

       state_other = ('other_state', 'My State')
       if state_other not in states:
           states.append(state_other)

我收到的错误是:

AttributeError: 'mrp.production' object has no attribute '_columns'

您遵循的教程适用于旧 API。 你可以试试 https://www.odoo.yenthevg.com/extend-selection-odoo-10/

from odoo import models, fields, api, _
 class HrEmployee(models.Model):
    _inherit = 'hr.employee' 
    gender = fields.Selection(selection_add=[('transgender', 'Transgender')])

您不需要扩展 __init__。请查看 documentation 以初步了解如何扩展 odoo 业务模型。

对于您的示例,正​​确的代码是:

from odoo import models, fields

class MrpProduction(models.Model):
    _inherit = 'mrp.production'

    state = fields.Selection(
        selection_add=[('other_state', 'My State')])