1

有没有办法从父模型类对象访问子模型类对象,或者现在这个父模型类对象有什么子模型类?

这是我的模型类:

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”对象访问那个“image1”对象,或者现在“content1”的类型是“Image “?

内容将来可以有很多子类,所以我不想查询所有子类。

4

1 回答 1

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

同样,您可以以相同的方式调用子类的方法。

如果您的目标是做其他事情,请举例说明。

于 2015-04-03T04:27:15.477 回答