odoo one2many list删除重复项

时间:2017-03-08 12:43:15

标签: odoo-10

我在odoo 10社区开发了一个购买模块,当我制作产品的cammand时,我想在widget one2many列表中禁用产品的重复选择,如下图所示: enter image description here

我想防止产品列表中的重复输入,这是我的命令模块的代码:

class PalBl(models.Model):
        _name = 'pal.bl'
        name = fields.Char('Reference', required=True)
        supplier = fields.Many2one('pal.vendor', required=True)
        date = fields.Date('Date', required=True)
        totalHt = fields.Float('Total HT', store=True, readonly=True, compute='_get_tot')
        totalTtc = fields.Float('Total TTC', store=True, readonly=True, compute='_get_tot')
        items_id = fields.One2many('pal.prs.com', 'prod_id')
        dateliv = fields.Date('Date de livraison prévue')
        nb_pr = fields.Integer('Total de Produit')
        state = fields.Selection([(1, 'En attente'), (2, 'Reglée')], 'type', default=1)
        _sql_constraints = [('item_code_uniq', 'unique(items_id.name.code)', "le code d'un produit doit etre unique !")]

这是产品的代码:

    class PalPrcom(models.Model):
            _name = 'pal.prs.com'
            name = fields.Many2one('pal.stock', 'Désignation', required=True)
            code = fields.Char('Ref produit', store=True, readonly=True, compute='_getref', inverse='_gedef')
            quantity = fields.Integer('Quantité', required=True, default=1)
            price = fields.Float('Prix achat HT', store=True, readonly=True, compute='_getref')
            tva = fields.Integer('TVA')
            remise = fields.Integer('Remise')
            prod_id = fields.Many2one('pal.bl')
            _sql_constraints = [ ('quantity_gt_zero', 'CHECK (quantity>0)', 'La quantité de produit doit etre supérieur à zéro!')

]

2 个答案:

答案 0 :(得分:0)

你可以使用两个for循环来迭代你的one2many字段并检查重复

答案 1 :(得分:0)

这将起作用。

_sql_constraints = [('order_name', 'unique (relation_id,field_name_1,field_name_2)',
                 'Duplicates are not allowed!')]