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

来源:7-4 .标签管理3

ALOH

2017-08-22

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

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

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
1
ALOH
谢谢老师明白了。但是如果没有修改就提交的话也是提示修改成功,这样的话,那只判断当前tag_count==1也就去除所以重复的情况也可以吧?
2017-08-22
共1条回复

Lee1

2017-08-22

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

0
1
rustgopy
同学,这个说明原数据库中存的的标签名称和你提交的标签名称相同,说明标签名称没有改变过,这个可以直接入库的。tag.name != data["name"] and tag_count == 1但是这种情况是不允许入库的,因为数据库存在其他标签名称和你提交过来的标签名称发生重复的冲突了,它就不唯一了。
2017-08-22
共1条回复

Python Flask 构建微电影视频网站

Python 最好用轻量级框架,让你轻松胜任 Python Web 工程师

683 学习 · 663 问题

查看课程