如何防止表的字段中出现重复值
其中一种方法是编写 on_apply 事件处理程序。
在下面的示例中,delta 参数是一个数据集,包含将要存储到 users 表中的更改。
我们遍历所有记录的更改,如果该记录没有被删除,或者 login 字段发生了更改, 则查找表中是否存在相同登录名的记录,如果存在则抛出异常。 如果用户在客户端使用编辑表单编辑记录,则无法保存该记录,并会看到相应的提示信息。
def on_apply(item, delta, params, connection):
for d in delta:
if not (d.rec_deleted() or d.rec_modified() and d.login.value == d.login.old_value):
users = d.task.users.copy(handlers=False)
users.set_where(login=d.login.value)
users.open(fields=['login'])
if users.rec_count:
raise Exception('There is a user with this login - %s' % d.login.value)