我的小网站有一张评论表和一张投票表。该网站的每个用户都可以对每条评论进行一次投票。
在向用户显示评论时,我将从评论表中进行选择,并在当前用户存在的情况下进行外部投票。
有没有办法通过 comment.my_vote 进行查询,投票将附加到评论中?
我现在这样做的方式是,查询为每个结果返回一个列表 - [comment, vote] - 我将它直接传递给我的模板。如果投票可以是评论的子对象,我更愿意。
我的小网站有一张评论表和一张投票表。该网站的每个用户都可以对每条评论进行一次投票。
在向用户显示评论时,我将从评论表中进行选择,并在当前用户存在的情况下进行外部投票。
有没有办法通过 comment.my_vote 进行查询,投票将附加到评论中?
我现在这样做的方式是,查询为每个结果返回一个列表 - [comment, vote] - 我将它直接传递给我的模板。如果投票可以是评论的子对象,我更愿意。
设置您的模型以添加一对一关系。链接中的示例代码逐字:
class Parent(Base):
__tablename__ = 'parent'
id = Column(Integer, primary_key=True)
child = relationship("Child", uselist=False, backref="parent",
# lazy='joined', # @note: optional: uncomment this to have the 'child' always loaded when the parent is loaded.
)
class Child(Base):
__tablename__ = 'child'
id = Column(Integer, primary_key=True)
parent_id = Column(Integer, ForeignKey('parent.id'))
在你的情况下Parent
将是Comment
并且Child
将会是Vote
。
然后就可以查询了Comment
,同时热切的加载了Vote
。为此,建议您取消注释上面注释掉的行,以便您的查询将在一个SQL
语句中返回所有内容。或者,您可以Vote
使用以下命令显式指定在查询中加载joinedload
:
res = query(Parent).options(joinedload(Parent.child))
最后,我决定使用查询返回的元组不是问题。