asy*_*ige 3 python sqlalchemy flask
我有一个外键指向另一个模型的模型。我查询第一个模型,并想访问与其相关的模型。在Django中,我可以从外键访问模型。如何在SQLAlchemy中做到这一点?
class Model(Base):
field_id = Column(Integer, ForeignKey('Model2.id'))
class Model2(Base):
id = Column(Integer)
needed_field = Column(Integer)
Run Code Online (Sandbox Code Playgroud)
models = Model.query.all()
return render to template('templ.html', models=models)
Run Code Online (Sandbox Code Playgroud)
Django的工作方式如下:
models = Model.objects.all()
model.field_id.needed_field # loop in template
Run Code Online (Sandbox Code Playgroud)
在Django中,定义外键可定义列以及与其他模型的关系。在SQLAlchemy中,您需要手动定义两者。请参阅有关定义关系的文档。
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
class Group(db.Model):
id = db.Column(db.Integer, primary_key=True)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
group_id = db.Column(db.ForeignKey(Group.id))
group = db.relationship(Group, backref='users')
db.create_all()
db.session.add(User(group=Group()))
db.session.commit()
u = User.query.get(1)
print(u.group)
Run Code Online (Sandbox Code Playgroud)
User.group_id是将a User与配对的外键Group。 User.group是关系(并且Group.users是另一个方向上的关系)。通常,您设置并读取关系,而不是外键。