写这篇文章时,我思考怎么才算理解掌握了从文档、视频学到的知识,写博客知识将习得的知识外现的一个最基础的步骤,关键看你总结出来的知识是否有体系完整,很有逻辑性,比如今天学到的backref和relationship,本来学的时候就一知半解,感觉懂了,我知道过了几天再看就不懂了,还不如一开始就彻底解决,我觉得这个东西本身就绕,我将通过一个例子,从没有使用这两个方法的查询代码与使用之后的查询代码相比较,从而从根本理解两者什么时候使用,怎么使用。
假设数据库中有两张表,一张Role表(Admin和User),一张User表,那么一个角色可能有多个用户,但一个用户只能属于一个角色,所以Role和User是一对多的关系,下面是Role和User的模型类。
1 | class Role(db.Model): |
添加外健在多方,添加relationship在一方。
现有需求如下:
1.知道Role,请查询出哪些用户数语此Role。
- 原始查询方法:
- role = Role.query.get(1)
- users = User.query.filter(role.id == User.role_id)
- 快速查询:
- role = Role.query.get(1)
- users = role.users
2.知道某个用户,查询出该用户属于的role。
- 原始查询方法:
- user = User.query.get(1)
- role = Role.query.filter(user.role_id == role.id)
- 快速查询:
- user = User.query.get(1)
- role = user.role