我试图在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中的代码中,结果保持不变。
答案 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"/>