标签: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表中的属性
标签:out 代理 primary 多对一 nbsp 其他属性 多个 sts turn
原文地址:https://www.cnblogs.com/zengxm/p/11153106.html