如何过滤 odoo8 中的 many2many 字段?

How to filter a many2many field in odoo8?

我有以下模型,并扩展到 product_template

class Version(models.Model):
    _name='product_cars_application.version'

    name = fields.Char()
    model_id = fields.Many2one('product_cars_application.model',string="Model")
    brand_id = fields.Char(related='model_id.brand_id.name',store=True,readonly=1)
    year_id = fields.Char(related='model_id.year_id.name',store=True,readonly=1)

from openerp.osv import osv,fields as Fields

class product_template(osv.osv):
    _name = 'product.template'
    _inherit = _name
    _columns = {
        'versions_ids':Fields.many2many('product_cars_application.version',string='Versions')
    }

以及我需要按 version_id

过滤产品的以下控制器
@http.route('/pa/get_products/<version_id>', auth='none', type='json',website=True)
    def get_products(self,version_id,**kwargs):
        #TODO APPEND SECURITY
        version_id = int(version_id)
        products = http.request.env['product.template'].sudo().search([(version_id,'in','versions_ids')])

我在 return 中获得 none 产品,而 version_id 在 versions_ids 中。 有谁知道我做错了什么?

"return products.ids" 在 get_products 中丢失,例如:

@http.route('/pa/get_products/<version_id>', auth='none', type='json',website=True)
    def get_products(self,version_id,**kwargs):
        #TODO APPEND SECURITY
        version_id = int(version_id)
        products = http.request.env['product.template'].sudo().search([(version_id,'in','versions_ids')])
    return products.ids

我需要将字段的比较值做成列表,可能是因为字段versions_ids是many2many

我是这样解决的:

@http.route('/pa/get_products/<version_id>', auth='none', type='json',website=True)
def get_products(self,version_id,**kwargs):
    #TODO APPEND SECURITY
    products = http.request.env['product.template'].sudo().search([('versions_ids','in',[version_id])])
    list = []
    for p in products:
        list.append([p.id, p.name])
    return {
        'products':list,
    }