Как сделать ean13 уникальным в odoo8
Мне нужно создать модуль в Odoov8, который может сделать поле ean13 в product.template уникальным.
Вот мой код:
# -*- coding: utf-8 -*-
from openerp import models, fields, api, _
from openerp.exceptions import ValidationError
class uniq_barcode(models.Model):
inherit = "product.template"
ean13 = fields.Char()
_sql_constraints = [
('ean13_uniq', 'unique(ean13)', _('code bare exisite deja !')),
]
Но это не работает! Я работаю над этим со вчерашнего дня
2 ответа
Решение
Эй, ребята, я не знаю, почему _sql_constraints не работает, но я попробовал что-то еще, и это работает! вот код
class uni_barcode(models.Model):
_inherit = "product.product"
@api.one
@api.constrains('company_id', 'ean13', 'active')
def check_unique_company_and_ean13(self):
if self.active and self.ean13 and self.company_id:
filters = [('company_id', '=', self.company_id.id),
('ean13', '=', self.ean13), ('active', '=', True)]
prod_ids = self.search(filters)
if len(prod_ids) > 1:
raise Warning(
_('Code bare existe deja !!'))
вуаля проблема Резолю Мерси
Этот код не будет работать, потому что ваша модель не унаследована от "product.template". Вы объявили inherit = "product.template"
, так должно быть _inherit = "product.template"
не забудь _