web-dev-qa-db-ja.com

odoo-8で関連フィールド(fields.related)を使用するにはどうすればよいですか?

Res_partnerからアカウント請求書モジュールにコメントフィールド(顧客の内部メモ)を取得しようとしています。今は後で印刷したいので、xmlコードに含めます。私はこのように3つの方法で試しました、

1)comment2 = fields.Char(string='Comment',related='res_partner.comment',compute='_compute_com')
@api.multi
def _compute_com(self):
    print self.comment2

2)comment = fields.Many2one('res.partner','Comment',compute='_compute_com')
  @api.multi
  def _compute_com(self):
    print self.comment

3)partner_comment = fields.Char(compute='_compute_com')
 @api.multi
 def _compute_com(self):
    Comment = self.env['res.partner'].browse(partner_id).comment
    print Comment
6
Bhanukiran

代わりに、関連フィールドを使用する必要があります。

comment = fields.Char(related='partner_id.comment')

account_invoiceレコードに保存する必要がある場合は、パラメータも追加する必要がありますstore = True問題は、この方法では単に印刷することはできませんが、必要な場合はそれを表示するには、ビューに配置する必要があります。

本当に一時的に印刷する必要がある場合は、別の方法で印刷する必要があります。

comment = fields.Char(compute='_compute_comment')

def _compute_comment(self):
    for record in self:
        record.comment = partner_id.comment
        print record.comment
15

関連フィールド

Fields.relatedフィールドはもうありません。

代わりに、モデルに関連するname引数を設定するだけです:

participant_nick = fields.Char(string='Nick name',
                           related='partner_id.name')

タイプkwargはもう必要ありません。

Store kwargを設定すると、値がデータベースに自動的に保存されます。新しいAPIを使用すると、関連フィールドの値が自動的に更新されます。

participant_nick = fields.Char(string='Nick name',
                           store=True,
                           related='partner_id.name')

注意

関連フィールドを更新するときに、フィールドが保存されていると、関連フィールドのすべての翻訳が翻訳されるわけではありません!!

チェーン関連フィールドを変更すると、チェーンのすべての要素のキャッシュが無効になります。

2
Jainik Patel

inodoo8

関連と同じオブジェクトフィールドが必要な場合は、related = "関連フィールド名"を使用できます。store= Trueを使用します。

comment2 = fields.Char(string='comment',related='comment', store=True)

[〜#〜]リンク[〜#〜]

1
Prashant

注意してください、あなたは同じ種類のフィールドを使わなければなりません!!

(選択と文字に問題があったので、選択と選択を使用する必要があります)

0
jteks