码迷,mamicode.com
首页 > 其他好文 > 详细

flask 模型一对多个人理解

时间:2019-07-08 19:09:05      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:out   代理   primary   多对一   nbsp   其他属性   多个   sts   turn   

在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 模型一对多个人理解

标签:out   代理   primary   多对一   nbsp   其他属性   多个   sts   turn   

原文地址:https://www.cnblogs.com/zengxm/p/11153106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!