跳至內容
選單
此問題已被標幟
3 回覆
6335 瀏覽次數

I try whit that, but don't work:

@api.multi
def write(self, values):
if self.total_desglose_store > self.plan_year_store:
raise UserError(
_('El total del desglose por empresa "%s" no puede ser mayor que el Plan Asignado "%s"') % (
self.total_desglose_store, self.plan_year_store))
return super(df_en_cda001_aprov_comp, self).write(values)
頭像
捨棄
最佳答案

Hi,

You can use api.constrains for this, see this:

@api.constrains('total_desglose_store', 'plan_year_store')
def check_age(self):
for rec in self:
if rec.total_desglose_store < rec.plan_year_store:
raise ValidationError(_('Error Message..!'))

Video: How To Add Constrains For A Field in Odoo12

Thanks

頭像
捨棄
作者 最佳答案

Thank you very much for your answers, both have been very useful

頭像
捨棄
最佳答案

As Niyas mentioned, api.constrains is the correct way to do this. However, looking at why your code didn't work may help you learn. There were three main issues with the code:

  1. Doing you check before calling super. This means that you are actually checking the values before they are updated. You need to call after super for vals to be applied.

  2. Doing a write hook only. This will not be called on the creation of a record, so a create hook would be required.

  3. Calling self.<field_name> in a function that can take multiple records. This will break if write was called on two or more records. You need to loop over the records in self.

This code will work, but you should still take Niyas' approach as it is the standard way to do this:

def write(self, vals):
# Call super
res = super(df_en_cda001_aprov_com, self).write(vals)
# Loop over records
for rec in self:
if rec.total_desglose_store < rec.plan_year_store:
raise ValidationError(_('Error'))
return res
頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
1
8月 25
976
2
11月 22
6614
1
9月 15
4510
1
4月 24
1714
0
3月 24
861