1

我有一个res.partner带有many2many字段属性 ( ) 的模型 ( courses)。它显示了合作伙伴加入的课程。在合作伙伴的看板视图中,我使用了 class oe_kanban_list_many2many,我可以在合作伙伴的名称下方看到一个标签列表,指示合作伙伴加入的课程。

但是,情况发生了变化。joining_date我需要存储一些关于合作伙伴和课程coursesmany2manyone2manypartner_idmany2onecourse_idmany2onejoining_date

所以,总结一下:

资源伙伴

_columns = {
... 'courses': fields.many2many('course', 'res_partner_course_rel', 'partner_id', 'course_id', 'Courses'), ...
}

看板视图

<span class="oe_kanban_list_many2many">
    <field name="courses"/>
</span>

现在

资源合作伙伴课程

_columns = {
    'partner_id': fields.many2one('res.partner', 'Partner'),
    'course_id': fields.many2one('course', 'Course'),
    'date': fields.date('Joining Date'),
}

资源伙伴

_columns = {
... 'courses': fields.one2many('res.partner.course', 'partner_id'), ...
}

看板视图

<span class="oe_kanban_list_one2many">
    <field name="courses"/>
</span>

在看板中,我想继续在标签上看到合作伙伴加入的课程,但我看到的是(n records)。例如,如果合作伙伴“John”加入了两门课程,我会在“John”下方看到(2 条记录)

我怎样才能像以前一样显示课程?

4

1 回答 1

0

最后,我找到了解决方案。可能不是最好的,但有效,我希望它对任何人都有帮助。

我在 res.partner 中声明了一个函数类型的新字段:

'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,],} ...

然后,在 XML 看板视图中,我们在 oe_kanban_list_many2many 类的标签内显示我们的新功能字段:

<span class="oe_kanban_list_many2many">
     <field name="courses"/>
</span>

就是这样,现在我可以看到合作伙伴加入的每门课程的标签。

于 2014-10-16T07:28:21.327 回答