flask-wtf编辑表单时,如果仍就用如下验证方法,那么怎么避免,当前数据未更改时提交成功


#1

场景:
后台在创建表单时,有些字段是需要防止重复的,所以需要做防重复操作。在新建的时候可以用下面方法。但是如果在编辑的时候,用下面的方法不变更当前数据,变更其他的内容,会抛错,所以当前数据字段未更改时提交成功,需要怎么修改

%E5%9B%BE%E7%89%87


#2

已解决,方法如下:
1.放弃当前的表单进行校验:
当前部分的校验,在后台进行校验,当前交易会比较头疼的就是,不管你编辑的时候,提交的数据是当前的数据,也会判断是重复的数据,比如关键词(当前列表存在当前的关键词,当你去修改的时候,程序会判断是否存在改关键词,存在就会抛错

2.后台校验:
把校验放在这里的好处是你能实时监控你需要的数据,并且在获取的数据上进行判断。图片总我已经注释了,回进行是否为当前关键词的内容比对,如果是当前关键词名称就只更新其他数据,如果不是当前关键词且在关键词列表没有进行更新,如果当前的关键词在关键期列表有存在关键词数据,就会抛错

3.花了一点时间理清楚了逻辑,后面就好写了,不要死磕表单的校验,放在后端校验也是可以的


#3

1:你问题描述的有点太啰嗦了
2:不要截图,这样不方便其他人验证你的代码,总不能让其他人手打你图片中的代码吧
3:你可以尝试一下验证规则中添加一个id字段作为辅助,在自定义验证规则时使用self,类中的属性都是可以全局使用

def validate_name(self, field):
    if Category.query.filter_by(name=field.data).filter(Category.id!=self.id.data).first()
        rasie ....


#4

感谢ing