2017-05-26 8 views
0

odooでapi.constrainを使用しようとしました。場合は、ユーザーが1つのフィールドを欠落している場合はodooに条件を与えたい、odooは警告のような警告を与え、ユーザーは前のフィールドに入力を与えなければならない。これは私のコードです:api.constrainフィールドの1つが空の場合に条件を指定する

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を置いてみました。結果は同じです。

+0

とtryブロックを使用して例外であなたのエラーを発生させて、もう一度あなたのコードを呼び出します関数呼び出しを通してブロックを除いて – Gahan

答えて

0

警告を表示するための制約はありません。あなたは、市内のフィールドとprovinsi欠損値で値を選択した場合

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

は今、それは「res.partner」形式のビューであるフィールド「都市」と「provinsiを」推測エラーMSG

表示されます!

0

あなたは、フィールドの値が空であるかどうか確認してください同じようrequired ="1"を使用する場合:必要に応じて、あなたのすべてのフィールドを作る

<field name="provinsi" required="1"/> 
関連する問題