我有两个模型,它们之间有一对多的关系
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
返回数据而不是查询对象)或者我在这里做错了什么?