Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp 如何对接受多个子类的超类字段进行编码?_Openerp_Odoo_Openerp 7_Odoo 8_Openerp 8 - Fatal编程技术网

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
字段是否同时接受class
child.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不能访问他们的孩子特定字段。我现在有点明白了,但我仍然不确定。根据你的建议,我认为这样做的目的是让孩子们可以从母亲班进入儿童班。但这不意味着每次创建一个新的子类时,我都需要编辑我的母类,这就违背了最初的抽象目的。你能给我一个基于我的课程的例子,以确保我的想法是正确的吗。