如果其中一个字段为空,则给出条件api.constrain

时间:2017-05-26 03:41:43

标签: python constraints odoo-8

我试图在odoo中使用api.constrain。情况是,如果用户缺少一个字段,我想给odoo一个条件,odoo会给出一些像警告一样的警告,并且用户必须给前一个字段提供一些输入。这是我的代码:

class Provinc(models.Model):
    _name = 'provinsi.model'
    _rec_name ='prov'

    prov = fields.Char(
        string='Provinsi',
    )

    res_partner_ids = fields.One2many(
        'res.partner',
        'provinsi'

    city_id  = fields.One2many(
        'city.model',
        'provinsi_id'
    )

class city(models.Model):
    _name = 'kota.model'
    _rec_name ='city'

    city = fields.Char(
        string='City',
    )
    res_partner_city = fields.One2many(
        'res.partner',
        'city'
    )

    provinsi_id = fields.Many2one(
        'provinsi.model',
        string='provinsi',
    )


class Master_data(models.Model):
    _inherit = 'res.partner'

    provinsi = fields.Many2one(
        'provinsi.model',
        'provinsi',
    )

    city = fields.Many2one(
        'city.model',
        'city',
    )

    @api.onchange('provinsi')
    def show_provinsi(self):
        return {'domain': {'city': [('provinsi_id', '=', self.provinsi.id)]}}


    @api.constrains('provinsi')
    @api.onchange('city')    
    def show_kota(self):
        for record in self:
            if record.provinsi == False:
                raise ValidationError("is gonna be error")

我尝试了两种方法。首先,我把api.constrain insode类设置为City,它没有用,第二种方法我把api.constrain放在类master中的代码中,结果保持不变。

2 个答案:

答案 0 :(得分:0)

你只需要onchang而不是任何约束来显示警告!

@api.onchange('city')    
def show_kota(self):
    if self.city and not self.provinsi:
        raise ValidationError("is gonna be error")

现在,如果您在城市字段中选择值并且provinsi缺少值,那么它将显示错误消息

  

猜测领域"城市"和" provinsi"在' res.partner'表单视图!

答案 1 :(得分:0)

如果您想检查字段值是否为空,只需使用required ="1",如:

<field name="provinsi" required="1"/>