首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ODO域过滤器many2many?

ODO域过滤器many2many?
EN

Stack Overflow用户
提问于 2020-01-20 07:42:42
回答 2查看 2.6K关注 0票数 2

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

这是我的代码

代码语言:javascript
复制
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‘是不定义的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-20 20:55:06

这是解决这个问题的最佳解决方案

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2020-01-20 15:05:40

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

代码语言:javascript
复制
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}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59815427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档