转载请注明原文地址: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)