有人可以向我解释有关相关领域的事情。例如 -
如果有人可以为字段的实际使用提供一个小例子。相关我会很感激。
答案 0 :(得分:9)
它允许您从相关表中提取字段。您可以在developer book中找到更多详细信息,查看的一个示例是order_partner_id
类的sale_order_line
字段。在版本5.14中,这是addons/sale/sale.py
的第806行。
我经常发现我想在列表中显示一个字段,但是它在父记录上而不是我列出的实际表中。
答案 1 :(得分: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'
。
答案 2 :(得分:1)
您可以在OpenERP开发人员文档中找到一个示例,在数据库规范化中,它称为Transitive dependency。
答案 3 :(得分:1)
相关字段将控件引导到另一个表,父表将与子表具有onetomany关系,并且子表与父表具有多个关系。 例如: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),