如何查询与SQLAlchemy的多对多关系?

时间:2017-09-09 21:09:27

标签: python flask sqlalchemy jinja2 flask-sqlalchemy

在我的Flask应用程序中,我有以下数据库结构。每个用户都可以拥有多个空间。用户还可以共享空间。

space_access = db.Table('space_access',
    db.Column('userid', db.Integer, db.ForeignKey('user.id')),
    db.Column('spaceid', db.Integer, db.ForeignKey('space.id')))

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(15), unique=True)
    email = db.Column(db.String(50), unique=True)
    password = db.Column(db.String(80))
    role='admin';

    spaces = db.relationship('Space', secondary=space_access, backref=db.backref('user'))

class Space(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    type = db.Column(db.String(50), unique=True)

现在我想获取id = 1的用户的所有空格并将其显示在我的HTML页面上。我在下面这样做但没有任何反应。

烧瓶中:

quer = Space.query.filter(Space.user.any(id=1)).all()
return render_template('test.html', spaces=quer)

HTML:

{% for Space in spaces %}
    {% if Space.name %}{{ Space.name }}{% endif %}
{% endfor %}

但是这样做不起作用。你能帮助我吗?感谢。

0 个答案:

没有答案