繁体   English   中英

odoo域过滤器many2many?

[英]odoo domain filter many2many?

我在产品模板中添加了一个汽车字段,该字段与包含所有汽车的汽车模型相关,而且我在多公司工作,并且我还添加了与汽车模型的多对多关系,我只需要过滤产品模板中的汽车并显示我在公司中分配的所有汽车

这是我的代码

class cars(models.Model):
_name = 'cars'

name = fields.Char( string="Car",translate=True , required=True, ondelete='restrict')

class autopartscompany(models.Model):
_inherit = 'res.company'

car_ids = fields.Many2many(comodel_name="cars",string="Cars" )


class autopart(models.Model):
_inherit = 'product.template'

car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False, domain="[('name','=', self.company_id.car_ids )]")

任何人都可以帮助我如何正确定义域过滤器,因为那个给了我错误错误:NameError:未定义名称'self'

要设置基于另一个字段的动态域,特别是可以保存大量记录的 many2many 字段,我认为使用 onchange 是最好的方法:

class autopart(models.Model):
    _inherit = 'product.template'

    car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False)

    # add the field itself to onchange to trigger this method in edit mode too
    @api.onchange('company_id', 'car') 
    def onchange_company(self):
        domain = []
        if self.company_id:
            domain.append(('id', 'in', self.company_id.car_ids.ids))
        return {'domain': {'car': domain}

这是解决它的最佳解决方案

def _get_cars_domain(self):
    print (self.company_id.car_ids)
    return [('id', 'in', self.env.user.company_id.car_ids.ids)]

car = fields.Many2one(comodel_name="cars", store=True, string="Car", ondelete='restrict', required=False,domain=_get_cars_domain)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM