有没有办法从父模型类对象访问子模型类对象,或者现在这个父模型类对象具有哪个子模型类?
以下是我的模型类:
class Content(models.Model):
_name = 'content'
title = fields.Char(string='Title', required=False)
summary = fields.Char(string='Summary', required=False)
description = fields.Char(string='Description', required=False)
class Video(models.Model):
_name = 'video'
_inherits = {'content': 'content_id'}
duration = fields.Float(string='Duration', required=False)
class Image(models.Model):
_name = 'image'
_inherits = {'content': 'content_id'}
width = fields.Float(string='Width', required=False)
height = fields.Float(string='Height', required=False)
如果我有一个“Content”类的对象说“content1”有一个子对象“image1”,有没有办法从“content1”对象或现在那种类型的“content1”访问该“image1”对象是“形象”?
以后内容可以有很多子类,所以我不想查询所有子类。
答案 0 :(得分:1)
在Odoo中你可以双向旅行,但你的模型应该像这样配置,
class Content(models.Model):
_name = 'content'
_rec_name='title'
title = fields.Char(string='Title', required=False)
summary = fields.Char(string='Summary', required=False)
description = fields.Char(string='Description', required=False)
video_ids : fields.One2many('video','content_id','Video')
image_ids : fields.One2many('image','content_id','Video')
class Video(models.Model):
_name = 'video'
_inherit = 'content'
duration = fields.Float(string='Duration', required=False)
content_id = fields.Many2one('content','Content')
class Image(models.Model):
_name = 'image'
_inherit = 'content'
width = fields.Float(string='Width', required=False)
height = fields.Float(string='Height', required=False)
content_id = fields.Many2one('content','Content')
您可以通过这种方式调用来访问子类的功能。
for video in content1.video_ids:
## you can access properties of child classes like... video.duration
for image in content1.image_ids:
print image.width
类似地,您可以以相同的方式调用子类的方法。
如果您的目标是做其他事情,请用示例指定。