0

我的小网站有一张评论表和一张投票表。该网站的每个用户都可以对每条评论进行一次投票。

在向用户显示评论时,我将从评论表中进行选择,并在当前用户存在的情况下进行外部投票。

有没有办法通过 comment.my_vote 进行查询,投票将附加到评论中?

我现在这样做的方式是,查询为每个结果返回一个列表 - [comment, vote] - 我将它直接传递给我的模板。如果投票可以是评论的子对象,我更愿意。

4

2 回答 2

2

设置您的模型以添加一对一关系。链接中的示例代码逐字:

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))
于 2013-04-20T20:59:50.520 回答
0

最后,我决定使用查询返回的元组不是问题。

于 2013-06-17T04:57:44.247 回答