flask 模型一对多个人理解
Posted zengxm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 模型一对多个人理解相关的知识,希望对你有一定的参考价值。
在modle中创建两个模型表
class User(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
u_name = db.Column(db.String(10), unique=True)
posts = db.relationship(‘Dongtai‘,backref=‘user‘,lazy=‘dynamic‘)
class Dongtai(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
body = db.Column(db.String(140),unique=True)
u_id = db.Column(db.Integer,db.ForeignKey(‘user.id‘))
分别是用户和动态模型
之间进行了关联 注意进行关联需要外链配合使用,只有一边进行关联会出错
一对多
一般来说自己做查询操作,比如我想要知道一个用户发的动态,那么需要先查询用户信息,然后通过用户信息查询用户的动态
但是flask-sqlalchemy通过一个关联属性可以只需要查询用户即可得到所发的动态
@app.route(‘/xxx/‘) def get_query(): # 其他属性也行 id u = User.query.filter(u_name="查询的用户").first() bodys = u.posts return render_template(‘xxxx.html‘,bodys=bodys) # 网页渲染 % for body in bodys % body.body <br> body.u_id <br> % endfor %
可以得到关联模型表中的属性,但不能查看反向关联的(也就是user表的属性)
多对一
多对一的查询由于有了反向代理
relationship(‘Dongtai‘,backref=‘user‘,lazy=‘dynamic‘)
可以通过
d = Dongtai.query.first() print(d.user.u_name)
直接询问动态模型进行查询,通过
ralationship("Dongtai",backref=‘user‘,lazy=‘dynamic‘) # 注意反向代理的backref 名称
通过反向关联的名称表可以得到user表中的属性
以上是关于flask 模型一对多个人理解的主要内容,如果未能解决你的问题,请参考以下文章
深入理解Flask(2.使用 SQLAlchemy 创建数据模型)
Flask 学习-78.Flask-SQLAlchemy 一对多关系