如何在odoo-8中使用相关字段(fields.related)?

How to use related fields (fields.related) in odoo-8?

我正在尝试从 res_partner 检索评论字段(客户内部注释)到帐户发票 module.Right 现在我只想稍后打印它 我将把它包含在 xml 代码中.我尝试了三种方式,

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

odoo8

如果需要与 related 相同的对象字段,则可以使用 related="related field name " 使用 store=True

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

您应该改用相关字段:

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

相关领域

不再有 fields.related 个字段。

相反,您只需设置与您的模型相关的名称参数:

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

不再需要类型 kwarg。

设置 store kwarg 会自动将值存储在数据库中。使用新的 API 相关字段的值将自动更新,sweet.

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

Note

When updating any related field not all translations of related field are translated if field is stored!!

链上相关字段修改会触发链上所有元素缓存失效

小心,你必须使用相同类型的字段 !!

(我遇到了 Selection 和 Char 的问题......所以我必须使用 Selection with Selection)