Python 奥多模型关系

Python 奥多模型关系,python,openerp,odoo-8,Python,Openerp,Odoo 8,我知道如何使用One2many关系建立header->detail关系。这很简单,但在现实世界中,我们需要有比这更复杂的事情 就我而言,我有这些桌子 Student Homework Paper Test -------------------------------------------- id id id id name subject title score

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

就我而言,我有这些桌子

Student      Homework      Paper       Test
--------------------------------------------
id           id            id          id
name         subject       title       score
Student
表中的

  • one2many
    家庭作业
  • one2many
    to
    Paper
  • one2many
    to
    Test
而且

  • 家庭作业
    多人
    学生
  • 论文
    多人
    学生
  • Test
    manyOne
    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
我可以用
学生
模型制作一个表单,并使用
One2many
小部件从该表单输入
作业
论文
,以及
测试

但是,如果我想有一个带有
家庭作业
模型的表单,我首先选择一个
学生
,然后输入她的
家庭作业
,而且我想从该表单中查看(或输入)她的其他信息,例如
论文
,和
测试

使用
作业
论文
测试
之间的
多个
关系,仅仅为了让学生的
论文
,以及
测试
可以从
作业
访问,我觉得很奇怪。它还使数据库结构复杂化,创建了不必要的
Many2many
关系

是否有其他方法代替使用
Many2many
关系?我觉得如果我使用它,数据库结构会非常难看


这对我来说是一个巨大的担忧,因为它是一个高度依赖模型的框架。你必须先从正确的型号开始

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

在家庭作业模型中,您可以创建一个与任何纸张字段相关的字段

          paper_ids = fields.One2many(related='student_id.paper_ids', readonly = True)
我假设在创建相关字段时,您的字段名为paper_id。在本例中,只要始终保持相同的类型,即one2many字段,并且如果您希望用户能够从该表单编辑字段,则可以删除readonly。相关字段类似于计算字段未存储在数据库中。如果要在数据库中存储该字段,必须将其设置为store=True


希望这对您有所帮助

您的意思是在家庭作业模型中添加此相关字段吗?