在SQLAlchemy中实现“喜欢”

时间:2011-08-26 13:18:04

标签: python database-design sqlalchemy

在许多应用程序中实现“喜欢”是非常简单的任务。然而,我正在开发的应用程序中的喜欢的问题是:有许多实体可以“喜欢”(例如:帖子,照片等)。

我目前推出了一个管理喜欢的简单Likeable课程。我喜欢的表看起来像这样:

like_table = Table('like', metadata,
                   Column('id', Integer, Sequence('like_id_seq'),
                          primary_key=True),
                   Column('entity_id', Integer, index=True),
                   Column('entity_type', String(32)),
                   Column('user_id', Integer, ForeignKey('user.id')))

创建新内容时,entity_type会为此Likeable分配{{1}},以反映所喜欢元素的类型。

但是,我知道这远非良好做法。 我应该如何实现喜欢以及我的数据库架构应该是什么样子以使其更加SQLAlchemish?

1 个答案:

答案 0 :(得分:0)

看看SA的Generic Associations示例。它完全符合您的要求 代码位于安装的example目录中,或者可以浏览here 最简单的实现discriminator_on_association.py与您的代码最相似。