我的小网站上有一张评论表和一张表格。网站的每个用户都可以对每条评论投票一次。
当向用户显示评论时,如果当前用户存在评论,我将从评论表和外部投票中进行选择。
有没有办法通过comment.my_vote进行投票将附加到评论的查询?
我现在正在这样做,查询返回每个结果的列表 - [评论,投票] - 我将它直接传递给我的模板。如果投票可能是评论的儿童对象,我更愿意。
答案 0 :(得分:2)
设置模型以添加One-to-one relationship。来自链接的示例代码:
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
语句。或者,您可以使用joinedload
明确指定查询中Vote
的加载:
res = query(Parent).options(joinedload(Parent.child))
答案 1 :(得分:0)
最后我决定使用查询返回的元组不是问题。