如何使用odoo计算方法返回操作



亲爱的,我想让记录是唯一的,我通过SQL约束做到了,它运行得很好,防止了我进行任何复制,

现在我需要做一个更高级的方法,在创建记录时检查名称并搜索整个记录,所以如果我找到了它,应该返回一个带有原始记录id 的表单视图的操作

这就是我所做的。

testt = fields.Text(string="", compute='open_duplicates', required=False, )
@api.depends('name','id_num')
def open_duplicates(self):
duplicated = self.env['muk_dms.directory'].search([('name','=', self.name)])
if duplicated:
print('inn')
return {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'muk_dms.  directory',
'target': 'current',
'res_id': duplicated.id,
'type': 'ir.actions.act_window',
}
else:
pass

现在,如果我输入了一个已经退出的名称,该方法将运行并打印"inn",但它不会返回操作

那么我该怎么做呢??

任何帮助都将不胜感激!!

在odoo中,有两种方法可以防止创建重复记录。1( 。给定sql约束2( 。python约束

你可以一次给出一个约束条件。

如果你给SQL约束比不需要给python约束

如果您想在用户创建重复记录时发出警告,您可以给予python约束。

参见以下示例


@api.constrains('name', 'state')
def _check_name(self):
for field in self:
if field.state == 'manual' and not field.name.startswith('x_'):
raise ValidationError(_("Custom fields must have a name that starts with 'x_' !"))
try:
models.check_pg_name(field.name)
except ValidationError:
msg = _("Field names can only contain characters, digits and underscores (up to 63).")
raise ValidationError(msg)

最新更新