如何在OpenERP 7中使用看板列表many2many样式?

时间:2014-10-15 08:11:42

标签: python xml openerp openerp-7 kanban

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

但是,情况发生了变化。我需要存储一些关于合作伙伴和课程之间关系的其他信息(joining_date),因此我必须更改字段courses的类型(从many2manyone2many ),并创建一个新的中间表,其中包含属性partner_idmany2one),course_idmany2one)和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条记录)

如何像以前一样展示课程?

1 个答案:

答案 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>

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