Odoo - 添加与销售订单相关的自定义字段

Odoo - add custom field related to Sale Order

如下所示,我在销售订单模型中添加了 sub.name 字段并且效果很好。

class sales_order_imcc(models.Model):
    _inherit = 'sale.order'
    sub_name = fields.Char(string="Subject Name")

现在我需要将此字段 sub_name 添加到选股模型,但出现内部服务器错误

class stock_exp(models.Model):
    _inherit = 'stock.picking'
    sub_name = fields.Char(string="SO Reference", related="sale_order_id.sub_name")

sale_order_id 应该在 stock.picking 模型中,否则会出现错误。在 Odoo 10 之前,在 sale_stock.

中添加了一个名为 sale_id 的计算字段

Odoo 8 示例:

def _get_sale_id(self, cr, uid, ids, name, args, context=None):
    sale_obj = self.pool.get("sale.order")
    res = {}
    for picking in self.browse(cr, uid, ids, context=context):
        res[picking.id] = False
        if picking.group_id:
            sale_ids = sale_obj.search(cr, uid, [('procurement_group_id', '=', picking.group_id.id)], context=context)
            if sale_ids:
                res[picking.id] = sale_ids[0]
    return res

_columns = {
    'sale_id': fields.function(_get_sale_id, type="many2one", relation="sale.order", string="Sale Order"),
}  

从版本10开始,sale_id被转换为相关字段,可以在下面Odoo 13的例子中看到:


class StockPicking(models.Model):
    _inherit = 'stock.picking'

    sale_id = fields.Many2one(related="group_id.sale_id", string="Sales Order", store=True, readonly=False)

您可以根据您的 Odoo 版本使用相同的逻辑从 sale.order.

获取 sub_name 的值