【问题标题】:odoo domain filter many2many?odoo 域过滤器many2many?
【发布时间】:2020-01-19 23:42:42
【问题描述】:

我在产品模板中添加了一个与包含所有汽车的车型相关的汽车字段,我也在多公司工作,我还添加了与车型的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 )]")

任何人都可以帮助我如何正确定义域过滤器,因为那个给我错误 Error: NameError: name 'self' is not defined

【问题讨论】:

    标签: python xml filter odoo


    【解决方案1】:

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

    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】:

      根据另一个字段设置动态域,特别是可以容纳的 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}
      

      【讨论】:

      • 非常感谢亲爱的,它运行良好,但请你描述一下我需要知道它是如何工作的代码
      • 当你改变两个字段之一的值时,company_id 或 car 这将触发这个函数,它返回一个字典,这个字典将被发送回客户端,客户端知道什么根据字典的键来处理它。例如这里我们提示我们需要更改 car 字段的域。
      • 你的回答很好,我也试图通过这个 def _get_cars_domain(self): print (self.company_id.car_ids) return [('id', 'in', self.env .user.company_id.car_ids.ids)]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多