向flask+sqlalchemy关系列添加筛选器

2024-04-20 14:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下型号:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    archived = db.Column(db.Boolean, default=False)


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.UnicodeText, nullable=True)

    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False, index=True)
    user = db.relationship(
        'User',
        backref='posts',
        foreign_keys='Post.user_id',
    )

如何向user关系列的Post添加筛选器以筛选出存档的用户?我希望避免将关系类型更改为lazy='dynamic',而是在这里的模型中这样做


Tags: keyidfalsetruedbmodel关系column
2条回答
  1. 通过User.query.filter(/**condition/)获取用户
  2. 然后Post.query.with_parent(user).filter(/**condition/)

比如:

user = User.query.filter_by(id='')
posts = Post.query.with_parent(user).filter(Post.id > 3).all()

您可以在Post下设置属性:

@property
def unfiltered_posts():
    return SESSION.query(cls).Join(User).filter(User.archived==False).all()

相关问题 更多 >