模型之间的关系

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

重新观察我们设计的模块,我们总结以下关系:

每个任务拥有一个状态。这种many2one的关系,也通常被称为外键。而反过来的关系,one2many,就意味着每个状态可以有多个任务。
每个任务有多个标签。这是many2many的关系。而反过来的关系,当然,也是many2many,一个标签也可被多个任务拥有

下面的实体关系图,可以帮助我们将创建的模块关系可视化。线条以三角形结尾的,代表关系中many的那方。

关系图.png

在我们的to-do任务模块的todo_model.py文件中添加对应的关系字段:

class TodoTask(models.Model):
    _inherit = 'todo.task'
    stage_id = fields.Many2one('todo.task.stage', 'Stage')
    tag_ids = fields.Many2many('todo.task.tag', string='Tags')

代码中,字段的基本语法是,设置相关模块,并且设置该字段展示的文本。命名字段时,有以下约定:以_id、_ids为结尾命名的字段,分别对应的是2one和2many的关系。

作为练习,请你尝试为关联模块添加正确的反过来的对应的关系字段:

在Stages中,Many2one反过来的关系字段是One2many,这样,每个状态才能有多个任务。我们需要为Stages类添加这种字段。
在Tags中,Many2many反过来的关系字段仍然是Many2many,这样,每个标识才可以被多个任务使用。

接下来,让我们仔细看看关系字段的定义

上一节:特殊字段名称 下一节:多对一关系