【问题标题】:How to check whether two many2many fields are exactly equal or not in odoo9?如何在odoo9中检查两个many2many字段是否完全相等?
【发布时间】:2016-08-10 10:34:13
【问题描述】:

我在模型“news.ads”和“blog.post”中都有一个 many2many 字段“tag_ids”。

我想从“blog.post”中获取“tag_ids”与“news.ads”中的“tag_ids”完全匹配的所有记录。

我在控制器中尝试了以下操作,但没有成功,

blog_obj = request.registry['blog.post']

p_id = blog_obj.search(cr, uid, ['&', ['id','=',post_id], ['website_published', '=', True]], context=context)

post = blog_obj.browse(cr, uid, p_id, context=context)


ad_obj = request.registry['news.ads']

banner_ads = ad_obj.search(cr, uid, [('state', '=', 'publish'), ('tag_ids', 'in', [post.tag_ids])], context=context)

如何在 odoo9 中搜索此类记录?任何解决方法..!!

【问题讨论】:

    标签: openerp odoo-8 odoo-9 odoo-website


    【解决方案1】:

    使用旧的api,search已经返回了匹配记录的id列表,因此无需再次调用browse,您可以直接在您的域过滤器中使用返回的列表

    blog_obj = request.registry['blog.post']
    
    p_id = blog_obj.search(cr, uid, ['&', ['id','=',post_id], ['website_published', '=', True]], context=context)
    
    # post = blog_obj.browse(cr, uid, p_id, context=context) you don't need this
    
    ad_obj = request.registry['news.ads']
    
    banner_ads = ad_obj.search(cr, uid, [('state', '=', 'publish'), ('tag_ids', 'in', p_id)], context=context)
    

    在新的 api 中,强烈建议您必须执行额外的步骤并自己提取 id,因为搜索现在返回一个记录集

    p_id = blog_obj.search(['&', ['id','=',post_id], ['website_published', '=', True]])
    
    p_id = [p.id for p in p_id]
    

    【讨论】:

      【解决方案2】:

      注意 1:不要在 ODOO-8 和 ODOO-9 中使用旧 API

      第一阶段:

      要获取我们正在使用的所有 many2many id 列表.ids,它将返回列表。

      第二阶段:

      情况:我们有两个列表,如果它们在第一个列表中,您想从第二个列表中获取项目。

      >>> a
      [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
      >>> b
      [2, 3, 5, 6, 7, 13]
      >>> c = [x for x in b if x in a]
      >>> c
      [2, 3, 5, 6, 7]
      

      注意 2:我是 odoo-8 开发人员。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-22
        • 2015-10-30
        • 2019-07-27
        • 2018-07-02
        • 2015-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多