Odoo中如何复制有唯一性约束的记录?

转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281393.html 

 

    如果为模型的字段添加了唯一性约束,那么在记录的form视图功能菜单上选择“复制”时就会报错。

    那么我们要在维持唯一性的前提下,保留复制功能,则只能重写模型的copy方法,在方法中为有唯一性约束的字段添加辨别性内容,使得纪录可以被成功复制(当然,新纪录中唯一性约束的字段时修改后的值,仍然唯一)

 def copy(self, default=None):
        default = dict(default or {})

       #统计数据库中已有多少个本纪录的副本
        copied_count = self.search_count(
            [('字段', '=like', u"Copy of {}%".format(self.字段))])
       #为副本中的字段值添加尾部修饰,维持唯一性
       #第一次复制:cpoy of 原字段值
        if not copied_count:
            new_字段 = u"Copy of {}".format(self.字段)
       #第n次复制:copy of 原字段值(次数)
        else:
            new_字段 = u"Copy of {} ({})".format(self.name, copied_count)
        #调用父类复制函数,并把新默认值传入
        default['字段名'] = new_字段
        return super(类名, self).copy(default)
posted @ 2019-05-07 15:58  keenyeh  阅读(644)  评论(0编辑  收藏  举报