2017-05-26 43 views
0

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

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") 

我试过2种方法。首先,我把api.constrain insode类City放到了这里,但它不起作用,我尝试的第二种方法是将类似代码的api.constrain放在class master中,结果保持不变。

+0

作出必要的所有领域,并使用try块和异常提高你的错误,并再次调用代码通过函数调用除外块 – Gahan

回答

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”的形式查看!

0

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

<field name="provinsi" required="1"/> 
相关问题