Как сделать 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"не забудь _

Другие вопросы по тегам