関連属性とは何ですか?何に使用できますか? および関連する属性を追加する方法。合計金額に関連するフィールドを追加しようとしています。
3 に答える
Odoo 関連フィールドの意味のコンテキストでは、その値は
- 別のテーブル (関連テーブル) から読み取る -->
store=False
- 別のテーブルから読み取りますが、定義されたテーブルに格納されます -->
store=True
例 (Odoo V8):
sale.order
currency_id: product_pricelist に保持されますstock_quant
Packaging_type_id: product_packaging および stock_quant に保持されます。product_packinging の値を変更するたびに、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 フィールドを追加する必要があります。当方の場合モデルは販売です。
関連するkwarg を使用すると、Many2one フィールドで定義された関連モデルのフィールドを関連付けることができます。私たちの場合、order_id .
store kwarg を設定すると、自動的に値がデータベースに保存されます。新しい API では、関連するフィールドの値が自動的に更新されます。 (参照)
お役に立てれば!
関連分野
このような場合、他のテーブルから値を取得する必要がありますが、モデルにはそのテーブルの参照が既にあります。その場合、参照テーブルから複数のフィールドを追加できる 1 つの機能を利用できますモデル内の参照フィールドは 1 つだけです。
ソース モデルの 1 つのリレーショナル フィールド (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)
注:
レコードを保存した後でのみ、そのフィールドで値を使用できます。
新しく定義された関連フィールドの値を更新すると、ソース フィールドでも更新されますが、新しく定義されたフィールドには常に読み取り専用を設定することをお勧めします。