首页 文章

Odoo many2one字段与one2many有关

提问于
浏览
1

我对Odoo源代码中的某些东西感到困惑 . 在 stock.picking 模型上,有一个 product_id 字段 . 它通过 move_lines.product_id 定义为相关字段 .

move_lines 是一个one2many字段 . 我不明白many2one字段如何使用one2many字段作为其关系 .

这是我所指的源代码的链接:

https://github.com/odoo/odoo/blob/316ffc80147de076b28c6156ac679dd90da0935e/addons/stock/models/stock_picking.py#L288

您可以看到 product_id 定义为:

product_id = fields.Many2one('product.product', 'Product', related='move_lines.product_id')

move_lines 定义为:

move_lines = fields.One2many('stock.move', 'picking_id', string="Stock Moves", copy=True)

这个定义的目的是什么?甚至如何允许?

如果我查看 product_id 字段的值以进行拣配,则会返回拣配中第一个移动线的产品,而不是所有产品 .

但是,如果我在“产品”字段上使用自定义过滤器搜索拣配树视图(例如, Product contains 'Product Name' ),则结果似乎会考虑到拣配中的所有产品 . 如果我在选择中搜索任何产品,则视图中会出现选择,它不仅限于第一个产品 .

有人可以解释这种行为吗?在源代码中甚至还有一个注释,即 product_id 字段专门用于搜索,因此我认为有一些我从未知道的神奇功能 .

1 回答

  • 1

    它's not related to the One2many field, it'与 move_lines 对象(它是 stock.move model)相关,并从该模型 product_id 字段中获取,其类型为Many2one . 所以,一切都是正确的 . Here's代码 .

相关问题