Odoo模型关系

Odoo model relationship

我知道如何使用 One2many 关系建立 header->detail 关系。这很简单,但在现实世界中,我们需要比这更复杂的东西。

就我而言,我有这些 tables。

Student      Homework      Paper       Test
--------------------------------------------
id           id            id          id
name         subject       title       score

Studenttable有

还有

导致这些关系

Student      Homework      Paper       Test
--------------------------------------------
id           id            id          id
name         subject       title       score
homework_ids student_id    student_id  student_id
paper_ids
test_ids

我可以使用 Student 模型创建一个表单,并使用 One2many 小部件从该表单输入 HomeworkPaperTest

但是如果我想要一个带有 Homework 模型的表格,我首先选择一个 Student 然后输入她的 Homework,但我也喜欢那个表格查看(或输入)她的其他信息,例如 PaperTest?

使用 HomeworkPaperTest 之间的 Many2many 关系只是为了让学生的 PaperTest 可以从Homework 对我来说似乎很奇怪。它还使数据库结构复杂化,创建不必要的 Many2many 关系。

除了使用 Many2many 关系,还有其他方法吗?感觉用那个数据库结构会很丑

我在看 Odoo 时非常担心,因为它是一个严重依赖模型的框架。您必须首先从正确的模型开始!

当你有一个 many2one 字段时,你可以创建相关字段以在当前表单中显示它们。

你的case in homework model你可以创建一个相关的字段到one2many field of paper。

          paper_ids = fields.One2many(related='student_id.paper_ids', readonly = True)

我假设你的字段被命名为 paper_ids 当你创建一个相关字段时,在这种情况下始终保持相同的类型 one2many 字段,如果你希望用户能够从该表单编辑字段。相关字段就像计算字段不存储在数据库中如果你想存储在数据库中你必须设置 store = True.

希望对您有所帮助