gpt4 book ai didi

python - Odoo模型关系

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:13 26 4
gpt4 key购买 nike

我知道如何使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com