Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

求助如何利用many2many字段在视图中进行分组



  • 我知道many2one可以用group_by直接分组,但是如何用many2many啊,比如我这个对象的不同实例的many2many对象有部分相同的内容,我想利用这个相同的内容将这些实例分组显示,该怎么解决啊,求大神给点思路。



  • 看 web/static/src/js/views/search_inputs.js,

    core.search_widgets_registry
    .add('char', CharField)
    .add('text', CharField)
    .add('html', CharField)
    .add('boolean', BooleanField)
    .add('integer', IntegerField)
    .add('id', IntegerField)
    .add('float', FloatField)
    .add('monetary', FloatField)
    .add('selection', SelectionField)
    .add('datetime', DateTimeField)
    .add('date', DateField)
    .add('many2one', ManyToOneField)
    .add('many2many', CharField)
    .add('one2many', CharField);

    many2many 搜索用的和 Char 一样都是:CharField,

    具体的 Group by 步骤去跟踪 js 里面 FilterGroup 相关代码了



  • 还有种影响性能的简单做法,

    你做个计算的字符串字段,

    根据many2many字段的值动态计算字符串的值,

    然后按照这个字符串分组



  • @siyuan 您好,多谢回复。我现在想的是比如这个many2many字段是names,现在有三个包含names字段的对象A、B、C,A的names是["john","mike"],B的names字段是["john"],C的names字段是["mike"],我想要根据names里面相同的部分进行分组,分成john一组包含A和B,再分成mike一组包含A和C,这样的话该怎么解决呢?求指教



  • @sirsir233

    改 web/static/src/js/views/search_inputs.js 里面的分组逻辑,

    具体哪部分要你自己跟js 代码了



  • @sirsir233 另外你这个需求可能还涉及到框架上tree显示的修改了,

    目前的tree view上应该不会显示多条相同的记录,

    你要同时显示AB 和 AC 还要去改 tree 的相关js代码了



  • 多谢,另外还想麻烦您一下,您知道如何重新弹窗的“X”也就是关闭按钮的方法吗;还有就是怎么在一个target为new的弹窗里返回另一个target为new的弹窗,我在python代码里返回视图,但是这个新弹窗直接覆盖了旧的弹窗,点击关闭按钮后两个一起消失了。



  • @sirsir233

    大部分的js前端代码都在 web 模块里,

    你可以跟踪js代码调查。



  • 好的,多谢解答🙏