誰かが私に関連分野について何か説明してもらえますか?例えば -
- 使用方法
- どのようにそれを助けることができるか
- どのようなシナリオでfields.relatedを使用する必要がありますか
誰かがfields.relatedの実際の使用法の小さな例を提供できれば幸いです。
関連するテーブルからフィールドをプルできます。詳細については、開発者向けの本を参照してください。例として、クラスのorder_partner_id
フィールドがあります。sale_order_line
バージョン5.14では、それはの806行にありaddons/sale/sale.py
ます。
リストにフィールドを表示したいことがよくありますが、リストしている実際のテーブルではなく、親レコードにあります。
関連フィールドを使用する場合は、最初に関連するフィールドを選択する必要があります。たとえば、学生の詳細を追加するための新しいモジュールを作成しています。ここでは、学生が実際にパートナーです。あなた_rec_name='partner_id'
はフィールドres.partner
を見たことがあるかもしれませんref
。ref
フィールドの値はinternal_number
、学生モジュールの値として使用されます。
だからここで私たちがしているのは
class student(osv.osv):
_name='student'
_rec_name='partner_id'
_columns ={
'partner_id':fields.many2one('res.partner','Name'),
'internal_number':fields.related(
'partner_id',
'ref',
type='char',
size=16,
string='Internal Number',
),
}
関連フィールドとして表示するフィールドが選択フィールドである場合は、タプルのリストを提供する必要がtype='selection'
ありselection=[(case1,case1),(case2,case2),...]
ます。それがmany2oneフィールドの場合、type='many2one'
そしてrelation='model_name'
。
OpenERP開発者向けドキュメントに例があります。データベースの正規化では、推移的な依存関係と呼ばれます。
関連フィールドは、コントロールを別のテーブルに導きます。親テーブルは子テーブルと1対多の関係を持ち、子テーブルは親テーブルに対して多対多の関係を持ちます。例:account.invoiceからaccount.invoice.lineへの次のフィールド
'invoice_line':fields.one2many('account.invoice.line'、'invoice_id'、'Invoice Lines'、readonly = True、states = {'draft':[('readonly'、False)]})、
account.invoice.lineは、次のコードが逆になっているaccount.invoiceに関連しています。
'invoice_id':fields.many2one('account.invoice'、'Invoice Reference'、ondelete ='cascade'、select = True)、