python - Odoo模型关系

标签 python odoo odoo-8

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

就我而言,我有这些表。

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

Student 表有

  • one2many家庭作业
  • one2many纸张
  • one2many测试

还有

  • 家庭作业many2one学生
  • 论文many2one学生
  • 测试many2one学生

产生这些关系

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 模型制作一个表单,并从该表单输入 HomeworkPaperTest使用 One2many 小部件。

但是,如果我想要一个带有 Homework 模型的表单,我首先选择一个 Student,然后输入她的 Homework,而且还我想从该表格中查看(或输入)她的其他信息,例如 PaperTest

作业论文测试之间使用Many2many关系只是为了获得学生的论文 和从 Homework 访问的 Test 对我来说似乎很奇怪。它还使数据库结构变得复杂,创建不必要的 Many2many 关系。

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

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

最佳答案

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

您在作业模型中的案例可以创建与论文的 one2many 字段相关的字段。

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

我假设您的字段名为 paper_ids,当您创建相关字段时,只需始终保持相同的类型,在本例中为 one2many 字段,如果您希望用户能够从该表单编辑该字段,则可以删除只读。相关字段就像计算字段一样,不会存储在数据库中,如果您想将其存储在数据库中,则必须设置 store = True。

希望这对你有帮助

关于python - Odoo模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46143748/

相关文章:

python - Swagger API 以及与 python 请求的交互

python - 如何在 Google App Engine 中对来自 webapp WSGI 应用程序的响应进行单元测试?

python - heapq.merge : after merge the result of merge, 原合并为空

c# - 如何在 Odoo 中批量插入记录?

python - 如何在 Odoo 中将值和翻译从一个字段复制到另一个字段?

javascript - 如何使用 t-extend 添加新按钮?

python - os.error 有什么意义?

python - odoo 12 自定义模块菜单未显示

Odoo - 在继承 View 中隐藏没有名称的组或页面

odoo - odoo10中点击打开新表单按钮时出现错误如何解决?