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
家庭作业
toone2many
Paper
toone2many
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
希望这对您有所帮助您的意思是在家庭作业模型中添加此相关字段吗?