Peewee在加入后访问一对多属性

时间:2017-07-03 03:29:10

标签: python sql peewee

我有一个名为Posts的表

class Posts(BaseModel):
    post_id= peewee.PrimaryKeyField()
    content = CharField(null=True)
    author = CharField(null=True)

和一个名为Likes的表

class Likes(BaseModel):
    user_like_id = ForeignKeyField(User,to_field='uniqueid', db_column='user_like_id')
    post_like_id = ForeignKeyField(Posts,to_field='post_id', db_column='post_like_id')

    class Meta:
        db_table='likes'
        primary_key = CompositeKey("user_like_id","post_like_id")

post_like_id指的是post_id。 我正在尝试进行单个数据库调用,在那里我可以获得10个帖子和所有这些帖子的喜欢,而不会为每个帖子发出数据库调用(迭代每个post_id并获得具有该ID的Likes计数)。

当我加入时如下:

k = Posts.select().join(Likes,on=(Posts.post_id == Likes.post_like_id)).execute()

我无法访问单个帖子上有多少个赞。

1 个答案:

答案 0 :(得分:0)

获取10个最受欢迎的帖子,例如(需要JOIN.LEFT_OUTER来包含零喜欢的帖子,fyi):

query = (Posts
         .select(Post, fn.COUNT(Likes.id).alias('ct'))
         .join(Likes, JOIN.LEFT_OUTER)
         .group_by(Post)
         .order_by(fn.COUNT(Likes.id).desc())
         .limit(10))