gpt4 book ai didi

python-3.x - 在 Odoo 11 中复制记录时,唯一约束会导致错误

转载 作者:行者123 更新时间:2023-12-05 03:06:16 25 4
gpt4 key购买 nike

我的 code 字段有一个唯一约束。当我在下拉操作中单击“重复”选项时,出现验证错误。即使字段 code 是唯一的,是否有任何方法可以使用“重复”?

 class sample(models.Model):
_name = 'sample'

code=fields.Char('Code',required=True)
name=fields.Char('Name',required=True)

_sql_constraints = [
('code_uniq', 'unique (code)', 'The code must be unique !')
]

最佳答案

是的,是的。你有两种方法可以做到这一点。复制记录时,copy方法被调用,它使用原始记录的值创建一个新记录(它只复制其参数 copy=True - 默认为 True - 的字段的值)。因此,您可以在 code 中更改该参数字段声明,或修改 copy避免相同复制的方法。

方式一:修改code字段的copy参数

这种方式是最简单的方式,但如果 code 会报错字段是必需的。

class sample(models.Model):
_name = 'sample'

code = fields.Char('Code', required=False, copy=False)
name = fields.Char('Name', required=True)

_sql_constraints = [
('code_uniq', 'unique (code)', 'The code must be unique !')
]

方式二:修改模型samplecopy方法

如果code,这就是您正在寻找的方式必须要求。

class sample(models.Model):
_name = 'sample'

code = fields.Char('Code', required=True)
name = fields.Char('Name', required=True)

_sql_constraints = [
('code_uniq', 'unique (code)', 'The code must be unique !')
]

@api.one
def copy(self, default=None):
if default is None:
default = {}
new_code = (self.code + ' (copy)') if self.code else ''
default.update({
'code': new_code,
})
new_sample = super(sample, self).copy(default=default)
return new_sample

关于python-3.x - 在 Odoo 11 中复制记录时,唯一约束会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49653392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com