0

我需要在 Odoov8 中创建一个可以使 product.template 中的 ean13 字段唯一的模块。

这是我的代码:

# -*- 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 !')),
    ]

但它不工作!我从昨天开始就在做这个

4

2 回答 2

0

此代码不会运行,因为您的模型不是从“product.template”继承的。你inherit = "product.template"说,应该是_inherit = "product.template",别忘了_

于 2016-07-26T04:20:38.680 回答
0

嘿伙计们,我不知道为什么 _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 !!'))

瞧,问题解决方案

于 2016-07-27T09:21:50.253 回答