【问题标题】:Odoo domain for Many2Many relationMany2Many 关系的 Odoo 域
【发布时间】:2017-11-27 10:43:40
【问题描述】:

代码如下:

class Car(models.Model):
    _name = 'car'
    parking_id = fields.Many2one('cars')

class Parking(models.Model):
    _name = 'parking'
    cars_ids = fields.One2many('cars', 'parking_id')

class Group(models.Model):
    _name = 'group'
    parking_id = fields.Many2one('parking')
    cars_ids = fields.Many2many('cars', lambda self: [('parking_id', '=', self.parking_id)])

我想要的是通过停在这些汽车上来限制汽车的记录。 但是我的代码不起作用。什么错误?

【问题讨论】:

    标签: openerp


    【解决方案1】:

    如果你在 python 代码中定义域,它不会在用户之后更改 选择parking_id 每次用户都需要更新域 更改parking_id

        class Group(models.Model):
            _name = 'group'
            parking_id = fields.Many2one('parking')
            # it's always better to define m2m field with full properties
            # cars_ids = fields.Many2many('cars','group_cars_rel', 'group_id', 'car_id', 'List of cars' )
            cars_ids = fields.Many2many('cars')
    
    
            @api.onchange('parking_id')
            def onchange_parking(self):
                """change the domain when user change parking_id"""
                # you may need to empty the many2many field if the user change the parking
                # if not just remove this line
                self.cars_ids = [(5, 0, 0)] # remove all record from many2many
    
                if self.parking_id:
                    return {'domain': {'cars_ids': [('parking_id', '=', self.parking_id.id)]}}
                else:
                    # remove domain
                    return {'domain': {'cars_ids': []}}
    

    【讨论】:

      【解决方案2】:

      您的域语法似乎错误,更改如下:

      class Group(models.Model):
          _name = 'group'
          parking_id = fields.Many2one('parking')
          cars_ids = fields.Many2many('cars', domain=[('parking_id', '=', parking_id)])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 2012-03-11
        • 1970-01-01
        相关资源
        最近更新 更多