什么是相关属性,它可以用来做什么?以及如何添加相关属性。我正在尝试为总金额添加一个相关字段。
3 回答
在 Odoo 相关字段的上下文中,它的值将是
- 从另一个表(相关表)读取-->
store=False
- 从另一个表中读取,但存储在其定义的表中 -->
store=True
示例(Odoo V8):
sale.order
currency_id:它保存在 product_priceliststock_quant
Packaging_type_id:在 product_packaging 和 stock_quant 中持久化。每次您更改 product_packing 上的值时,它也会在 stock_quant 上更新,反之亦然。
当您想从另一个模型中提取值时使用**相关字段*,您可以在字段上使用相关字段。
这是一个给你的例子。
order_id = fields.Many2one(comodel_name='sale.order', 'Sale Order')
order_amount = fields.Monetary(string='Order Amount',
store=True,
related='order_id.amount_total')
您必须在模型中添加与要访问字段的模型相关的 Many2one 字段。在我们的案例中,模型是sale.order。
使用相关的kwarg,您可以关联 Many2one 字段中定义的相关模型的字段。在我们的例子中order_id。
设置store kwarg 将自动将值存储在数据库中。使用新的 API,相关字段的值将自动更新。(参考)
希望这可以帮助!
相关领域
在这种情况下,我们需要从任何其他表中获取值,但我们的模型中已经有了该表的引用,在这种情况下,我们可以利用一个功能,我们可以通过添加引用表中的多个字段我们的模型中只有一个参考字段。
源模型的一个关系字段 (Many2one) 必须在目标模型中具有以创建关系字段。
考虑res.currency模型中的company_currency_id字段在目标模型中,然后您可以在目标模型中获取该货币的当前汇率。
语法:v7
_columns = {
'current_rate': fields.related('company_currency_id','rate_silent', type='float', relation='res.currency',digits_compute=dp.get_precision( 'Account'), string='Current Rate', readonly=True),
}
这里,
company_currency_id => 与新字段相关的同一模型中的字段,
rate_silent => 是您要与新字段相关的字段,表示来自源模型的字段,
关系 => 是源模型名称,
type => 是源字段的数据类型
语法:v8 及更新版本
current_rate = fields.Float(string='Current Rate', related='company_currency_id.rate_silent', store=True, readonly=True)
注意:
只有在您保存记录后,该字段中的值才可用。
当您在新定义的相关字段中更新值时,它也会在源字段中更新,尽管始终建议在新定义的字段中设置只读。