10

有人可以向我解释一下相关领域的事情。例如 -

  • 它是如何使用的
  • 如何帮助
  • 对于哪种情况我应该使用 fields.related

如果有人可以提供一个真正使用fields.related的小例子,我将不胜感激。

4

4 回答 4

9

它允许您从相关表中提取字段。您可以在开发人员手册中找到更多详细信息,其中一个示例是类的order_partner_id字段sale_order_line。在 5.14 版中,位于addons/sale/sale.py.

我经常发现我想在列表中显示一个字段,但它位于父记录上,而不是我列出的实际表上。

于 2010-10-08T19:42:09.070 回答
8

使用相关字段时,您必须首先选择要关联的字段。例如,我正在创建一个用于添加学生详细信息的新模块。在这里,学生实际上是合作伙伴。所以_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'

于 2011-11-29T10:05:37.650 回答
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', '发票参考', ondelete='cascade', select=True),

于 2012-04-19T04:55:05.013 回答
1

您可以在 OpenERP 开发人员文档中找到一个示例,在数据库规范化中它被称为传递依赖

于 2011-05-09T21:49:59.103 回答