【问题标题】:How to make a Many2One constraint in odoo 10如何在 odoo 10 中创建 Many2One 约束
【发布时间】:2018-02-15 21:40:33
【问题描述】:

我正在使用 Odoo 10,我正在尝试像下一张图片一样修改车队模块

我们需要字段“Conductor”(司机)是唯一的,我的意思是,一辆车只能分配一个司机,而司机不能分配超过一辆车。

我使用了这个代码:

@api.constrains('driver_id')
    def _check_driver(self):
        for record in self:
            if record.driver_id in self:
                raise ValidationError("Driver already has a vehicle assigned")

但该代码不起作用。我该如何解决?

【问题讨论】:

    标签: constraints odoo-10 fleet


    【解决方案1】:

    您可以在字段定义中应用域过滤器,如下所示

    #definition on the fleet.vehicle model
    driver_id = fields.Many2one('res.partner', index=True, required=True,
        ondelete='cascade', domain=[('vehicle_id', '=', False)])
    
    #definition on the res.partner model
    vehicle_id = fields.One2many('fleet.vehicle', 'driver_id')
    

    或如下:

    @api.constrains('driver_id')
    def _check_driver(self):
        FleetVehicle = self.env['fleet.vehicle']
        for record in self:
            if record.driver_id in self:
                vehicle_count = FleetVehicle.search_count(['driver_id', '=', record.driver_id])
                if vehicle_count > 0:
                    raise ValidationError("Driver already has a vehicle assigned")
    

    【讨论】:

      【解决方案2】:
      _sql_constraints = [
              ('driver_unique', 'UNIQUE(driver_id, )',
               'The Driver has been already assigned to a vehicle !'),
          ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-24
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多