请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么不是if tag.name == data["name"] and tag_count == 1:呢?

if tag.name == data["name"] and tag_count == 1:
    flash("标签已存在!", "err")
    return redirect(url_for("admin.tag_edit", id=id))

如果是tag.name != data["name"]的话不是永远都不会触发这个flash了吗

正在回答

2回答

rustgopy 2017-08-22 08:54:27

同学,你好,这里是这样理解的:

tag_count = Tag.query.filter_by(name=data["name"]).count()
if tag.name != data["name"] and tag_count == 1:

第一句是查询当前表单提交的标签名称在数据库里面是否存在

第二句是对比当前提交的标签名称和原数据库中的标签名称是否相同,如果不相同,说明当前提交的标签名称修改过,如果tag_count==1,说明当前提交的标签名称和原数据库中的标签名称不相同并且当前提交的标签名称在数据库中有其他记录了,出现这种情况就要排除它。

举个例子

数据库中有两个标签A和B,A表示原数据库中的标签名称、B表示数据库中的其他标签名称。我们既要判断提交的C和A不相等,也要判断C和B不重复,这样才能达到去重的效果。


0 回复 有任何疑惑可以回复我~
  • 提问者 ALOH #1
    谢谢老师明白了。但是如果没有修改就提交的话也是提示修改成功,这样的话,那只判断当前tag_count==1也就去除所以重复的情况也可以吧?
    回复 有任何疑惑可以回复我~ 2017-08-22 10:29:14
Lee1 2017-08-22 08:55:41

就是 tag.name==data['name'] 我是这样判断的  

0 回复 有任何疑惑可以回复我~
  • 同学,这个说明原数据库中存的的标签名称和你提交的标签名称相同,说明标签名称没有改变过,这个可以直接入库的。tag.name != data["name"] and tag_count == 1但是这种情况是不允许入库的,因为数据库存在其他标签名称和你提交过来的标签名称发生重复的冲突了,它就不唯一了。
    回复 有任何疑惑可以回复我~ 2017-08-22 10:15:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信