Odoo模型关系
Odoo model relationship
我知道如何使用 One2many
关系建立 header->detail
关系。这很简单,但在现实世界中,我们需要比这更复杂的东西。
就我而言,我有这些 tables。
Student Homework Paper Test
--------------------------------------------
id id id id
name subject title score
Student
table有
one2many
到 Homework
one2many
到 Paper
one2many
到 Test
还有
Homework
有 many2one
到 Student
Paper
有 many2one
到 Student
Test
有 many2one
到 Student
导致这些关系
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
小部件从该表单输入 Homework
、Paper
和 Test
。
但是如果我想要一个带有 Homework
模型的表格,我首先选择一个 Student
然后输入她的 Homework
,但我也喜欢那个表格查看(或输入)她的其他信息,例如 Paper
和 Test
?
使用 Homework
、Paper
和 Test
之间的 Many2many
关系只是为了让学生的 Paper
和 Test
可以从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.
希望对您有所帮助
我知道如何使用 One2many
关系建立 header->detail
关系。这很简单,但在现实世界中,我们需要比这更复杂的东西。
就我而言,我有这些 tables。
Student Homework Paper Test
--------------------------------------------
id id id id
name subject title score
Student
table有
one2many
到Homework
one2many
到Paper
one2many
到Test
还有
Homework
有many2one
到Student
Paper
有many2one
到Student
Test
有many2one
到Student
导致这些关系
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
小部件从该表单输入 Homework
、Paper
和 Test
。
但是如果我想要一个带有 Homework
模型的表格,我首先选择一个 Student
然后输入她的 Homework
,但我也喜欢那个表格查看(或输入)她的其他信息,例如 Paper
和 Test
?
使用 Homework
、Paper
和 Test
之间的 Many2many
关系只是为了让学生的 Paper
和 Test
可以从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.
希望对您有所帮助