Openerp 奥多,可以';t在同一视图中没有两个不同的同级对象
我有一个名为detail\u base的类,还有另外两个名为flight\u detail和tour\u detail的类,最后两个类继承自第一个类,如下所示:Openerp 奥多,可以';t在同一视图中没有两个不同的同级对象,openerp,odoo-10,siblings,Openerp,Odoo 10,Siblings,我有一个名为detail\u base的类,还有另外两个名为flight\u detail和tour\u detail的类,最后两个类继承自第一个类,如下所示: class DetailBase(models.Model): _名称='detail_base' 费用=字段。货币(‘费用’) 乘客=字段.Char('passenger') 类FlightDetail(models.Model): _名称='航班详细信息' _继承='detail\u base' passport=fields.Ch
class DetailBase(models.Model):
_名称='detail_base'
费用=字段。货币(‘费用’)
乘客=字段.Char('passenger')
类FlightDetail(models.Model):
_名称='航班详细信息'
_继承='detail\u base'
passport=fields.Char('passport')
类别详细信息(models.Model):
_名称='tour_detail'
_继承='detail\u base'
年龄=字段。整数(‘游客年龄’)
问题是,当我在同一个视图中调用航班详情和巡更详情时,浏览器无法处理这两个类的公共属性,如果我将5分配给航班详情.fee,则该数字将存储到航班详情.fee中
问题似乎与同名不同对象的属性有关
我将非常感谢您的帮助。您应该使用
\u继承
类DetailBase(models.AbstractModel):
_名称='detail_base'
费用=字段。货币(‘费用’)
乘客=字段.Char('passenger')
类FlightDetail(models.Model):
_名称='航班详细信息'
_继承='detail\u base'
passport=fields.Char('passport')
类别详细信息(models.Model):
_名称='tour_detail'
_继承='detail\u base'
年龄=字段。整数(‘游客年龄’)
它应该创建3个数据库表(detail\u base
asModel
)或2个数据库表(AbstractModel
)
或者使用\u继承
,例如:
class DetailBase(models.Model):
_名称='detail_base'
费用=字段。货币(‘费用’)
乘客=字段.Char('passenger')
类FlightDetail(models.Model):
_名称='航班详细信息'
_继承={'detail_base':'base_id'}
passport=fields.Char('passport')
base\u id=fields.manyOne('detail\u base',required=True,ondelete='cascade')
类别详细信息(models.Model):
_名称='tour_detail'
_继承={'detail_base':'base_id'}
年龄=字段。整数(‘游客年龄’)
base\u id=fields.manyOne('detail\u base',required=True,ondelete='cascade')
这将创建3个表,fee
和passenger
将存储在detail\u base
表中。Odoo将从那里获得它,因为它是一种委托继承。使用继承:
1-继承而不使用_名称:
inherit='model.name'
新建字段=字段。。。
这会将此字段添加到model.name
2-使用_名称继承:
inherit='model.name'
_name='new.model'
这里将在数据库中创建一个与model.name结构相同的新选项卡
继承:委托继承
最好的例子是res.users
和res.partners
用户是合作伙伴,所以当我们创建res.users
记录时,我们必须创建一个res.partener
,它包含诸如姓名、电子邮件、地址等公共字段。。。与用户相关的信息,如passowrd和login,存储在res.users
model中,通过继承类型,您可以直接访问res.partener的字段,而无需创建相关字段。您可以执行user\u记录。姓名
或电子邮件
或地址
这不会是问题
我喜欢把它看作一种关系
\u inherits={model.name:manyOne\u field\u id}
_name='new.model'
#m2o字段应为必填字段,ondelete=级联
manyOne\u field\u id=fields.manyOne('model.name',string='Label',required=True,ondelete=“cascade”)
因此,当您创建new.model的记录时,
model.name
中的所有字段都将存储在model.name
中 我只能接受一个答案,而你的答案与第一个答案非常相似,如果我能接受这两个答案,我会接受的,但我真的很感谢你的时间。