我有一个带有res.partner
字段属性(many2many
)的模型(courses
)。它显示了合作伙伴加入的课程。在合作伙伴的看板视图中,我使用了课程oe_kanban_list_many2many
,我可以看到合作伙伴'命名一个标签列表,表明合作伙伴加入的课程。
joining_date
),因此我必须更改字段courses
的类型(从many2many
到one2many
),并创建一个新的中间表,其中包含属性partner_id
(many2one
),course_id
(many2one
)和joining_date
。
所以,总结一下:
BEFORE
res.partner
_columns = {
... 'courses': fields.many2many('course', 'res_partner_course_rel', 'partner_id', 'course_id', 'Courses'), ...
}
看板视图
<span class="oe_kanban_list_many2many">
<field name="courses"/>
</span>
立即
res.partner.course
_columns = {
'partner_id': fields.many2one('res.partner', 'Partner'),
'course_id': fields.many2one('course', 'Course'),
'date': fields.date('Joining Date'),
}
res.partner
_columns = {
... 'courses': fields.one2many('res.partner.course', 'partner_id'), ...
}
看板视图
<span class="oe_kanban_list_one2many">
<field name="courses"/>
</span>
在看板中,我想继续在标签上看到合作伙伴加入的课程,但不是那样,我看到(n条记录)。例如,如果合作伙伴&#39; John&#39;已经加入了两门课程,我看到,约翰&#39;,(2条记录)。
如何像以前一样展示课程?
答案 0 :(得分:0)
最后,我找到了解决方案。可能不是最好的,但有效,我希望它对任何人都有帮助。
我在res.partner中声明了一个类型为function的新字段:
'courses': fields.function(
_get_courses,
type='many2many',
obj="course",
method=True,
string='Courses'),
在此之上,我声明了函数_get_courses,我在其中进行SQL查询以获取合作伙伴加入的所有课程。该函数返回一个具有此结构的字典(让我们显示一个带有虚构数据的示例):{partner_id_1:[joined_course_id_1,joined_course_id_2,],partner_id_2:[joined_course_id_1,],partner_id_3:[joined_course_id_5,joined_course_id_8,],} ... < / p>
然后,在XML看板视图中,我们使用类oe_kanban_list_many2many在标记内显示我们的新功能字段:
<span class="oe_kanban_list_many2many">
<field name="courses"/>
</span>
就是这样,现在我可以看到合作伙伴加入的每个课程的标签。