在class_product类中,我覆盖了create()
和write()
方法。但是,当我创建新产品时,会调用create()
以及write()
。我的理解是只应调用create()
。我做错了什么?
以下是代码:
class product_product(osv.Model):
_inherit = 'product.product'
def create(self, cr, uid, vals, context=None):
default_code = vals.get('default_code')
categ_id = vals.get('categ_id')
class_number = self.pool.get('product.category').browse(cr, uid, categ_id, context=context).x_category_code
item_number_validation_check(default_code, class_number)
# If default_code already exist, raise error
pp_obj = self.pool.get('product.product')
id_s = pp_obj.search(cr, uid, [('default_code', '=', default_code)])
if len(id_s) != 0:
raise osv.except_osv(('Error!'), ('The item number already exists!' ) )
return super(product_product, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
new_default_code = vals.get('default_code')
答案 0 :(得分:0)
通常,正如您所说,不应在产品创建时调用write方法。
在这种情况下,我认为您可以做的更好的是在您的create方法中放置一个调试器断点,然后输入父的create,以查看它是否正在调用write()。
还有一个补充说明,我很确定在写作中你还应该调用super()。