2017-05-26 93 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"/> 
相關問題