Openerp 如何对接受多个子类的超类字段进行编码?
我希望有一个由子类继承的超类 假设我希望超类Openerp 如何对接受多个子类的超类字段进行编码?,openerp,odoo,openerp-7,odoo-8,openerp-8,Openerp,Odoo,Openerp 7,Odoo 8,Openerp 8,我希望有一个由子类继承的超类 假设我希望超类mother由child.a和child.b继承 所以我上这些课 母亲: class mother(osv.osv): _name = "mother" mother() 儿童a: class child_a(osv.osv): _name = "child.a" _inherit = "mother" child_a() 儿童b: class child_b(o
mother
由child.a
和child.b
继承
所以我上这些课
母亲:
class mother(osv.osv):
_name = "mother"
mother()
儿童a:
class child_a(osv.osv):
_name = "child.a"
_inherit = "mother"
child_a()
儿童b:
class child_b(osv.osv):
_name = "child.b"
_inherit = "mother"
child_b()
现在让我们假设我有一个类a
,它有一个manyOne
到mother
class a(osv.osv):
_name = "a"
_columns = {
'mother' : fields.many2one('mother', 'Mother'),
}
a()
mother
字段是否同时接受classchild.a
和child.b
。如果是,如何对创建和写入方法进行编码。如果没有,我如何以其他方式实现这一点?(字段接受多个子类)否,a多个子类
引用母亲
无法寻址类a
或类b
的记录
用于class.a
和class.b
的继承方法实际上复制了mother
特征。它们创建了两个新的独立表,即mother
的副本,其中包含独立的数据集
这意味着这些类不能以任何方式互换。
child.a
中的记录在mother
中不存在,反之亦然
您所描述的内容可以通过以下方式实现:您可以认为,class.x
通过一种特殊的manyOne
关系,将母亲
类“嵌入”其中
这样,当您创建一个新的class.x
记录时,也会隐式创建一个新的mother
记录
但这是一种方式:创建一个新的mother
记录不会创建class.x
记录
核心模块中的一个是res.users
:用户“嵌入”合作伙伴。创建新用户时,也会为其创建新的合作伙伴
许多与合作伙伴的关系也将能够引用用户嵌入的合作伙伴。但是许多与用户的关系将无法引用非用户的合作伙伴。从示例中,两个
manyOne
字段被添加到mother
中,但它不会在每次创建子项时强制创建mother
?将必填的manyOne mother
字段添加到孩子中不是更合理吗?我仍然不理解这个概念。诀窍是不要把它看作是实际的“对象继承”,而只考虑“复制模型”。老实说,该继承方法只在适当地扩展类时有用。要创建派生类,您应该真正使用委托继承。但是两个派生类(child_a,child_b)都不能放入模型a
中的一个多个母亲字段中,它们会吗?child_a
和child_b
记录都创建并“嵌入”了一个母亲
记录。许多母亲可以引用由孩子A和孩子b创建的记录,虽然afaik不能访问他们的孩子特定字段。我现在有点明白了,但我仍然不确定。根据你的建议,我认为这样做的目的是让孩子们可以从母亲班进入儿童班。但这不意味着每次创建一个新的子类时,我都需要编辑我的母类,这就违背了最初的抽象目的。你能给我一个基于我的课程的例子,以确保我的想法是正确的吗。