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 一对多关系

深入浅出Flask(49):flask_sqlalchemy的创建一对多的关系表

Flask--(一对多)模型渲染表单数据

python | 对 Flask 蓝图(Blueprint)的理解