python - 如何在 Odoo 13 中将现有相关字段转换为计算字段?

标签 python python-3.x odoo odoo-13

我有这个现有字段:

picking_code = fields.Selection(
    related='picking_id.picking_type_id.code',
    readonly=True,
)

我想继承它,删除相关参数并添加一个计算参数以根据某些条件设置其值。

我的尝试:

@api.depends('picking_id', 'picking_id.picking_type_id',
             'picking_id.picking_type_id.code',
             'move_id', 'move_id.picking_type_id',
             'move_id.picking_type_id.code')
def _compute_picking_code(self):
    _logger.critical('NEVER EXECUTES THIS' * 80)
    for line in self:
        if line.picking_id:
            line.picking_code = line.picking_id.picking_type_id.code
        else:
            line.picking_code = line.move_id.picking_type_id.code

picking_code = fields.Selection(
    related=False,
    compute='_compute_picking_code',
)

问题是计算方法从未执行,并且出现以下错误,这是有道理的,因为如果不执行计算方法,则不会为该字段设置选择值:

AssertionError: Field stock.move.line.picking_code without selection - - -

最佳答案

已解决,如果有人对此主题感兴趣,它是一个 Selection 字段,因此如果删除 相关 参数,我必须再次指定该对象的元组列表选择参数。

picking_code = fields.Selection(
    selection=[
        ('incoming', 'Receipt'),
        ('outgoing', 'Delivery'),
        ('internal', 'Internal Transfer'),
    ],
    compute='_compute_picking_code',
    related=False,
    readonly=True,
)

关于python - 如何在 Odoo 13 中将现有相关字段转换为计算字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64462047/

相关文章:

python - Python 中的字符串连接比 Go 快得多

python - django 是否在其 URL 中支持 hashbang?

python-3.x - 如何修复 : cx_Oracle. DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库 - Python

odoo - Attachment=True odoo 13 做什么

python - get_pdf api.v8 Odoo。我应该发送什么参数作为 "records"

Python/Scipy kde 拟合、缩放

python - 带有整数的 'while' 在 Python 中是什么意思,这个 GCD 代码是如何工作的?

python - 编写 MongoDB 查询来根据引用的属性进行过滤?

xml - 如何更改不同树的默认排序顺序 sale.order.line

python - 命令 $python3 manage.py migrate 出错