烧瓶关系返回查询对象而不是数据

时间:2021-05-27 17:35:12

标签: python flask flask-sqlalchemy relationship

我有两个模型,它们之间有一对多的关系

class User(db.Model):

    __tablename__ = 'users'

    id = db.Column(db.Integer(), primary_key=True)
    username = db.Column(db.String(40))
    posts = db.relationship(
        'Post',
        backref='user',
        lazy='dynamic'
    )

    def __init__(self, username):
        self.username = username

    def __repr__(self):
        return f'<User {self.username}>'


class Post(db.Model):

    __tablename__ = 'posts'

    id = db.Column(db.Integer(), primary_key=True)
    title = db.Column(db.String(50))
    user_id = db.Column(db.Integer(), db.ForeignKey('users.id'))

    def __init__(self, title, user_id):
        self.title = title
        self.user_id = user_id

    def __repr__(self):
        return f'<Post {self.title}>'

我在两个表中都创建了示例记录 当我尝试访问帖子的用户时,它工作正常

post.user
output : <User jon Dove>

但是当我尝试访问用户的帖子时,它返回查询对象而不是数据

user.posts
output : <sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x7f2fe1ad2c10>

然后我需要对其执行 .all() 以获得实际数据。这就是关系的工作原理(如果是,那么为什么 post.user 返回数据而不是查询对象)或者我在这里做错了什么?

0 个答案:

没有答案