在联接后访问一对多属性



我有一个名为Posts的表

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

和一个名为"喜欢"的表

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 获取喜欢计数(。

当我加入如下:

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

我无法访问在单个帖子上获得了多少个赞。

获取 10 个最受欢迎的帖子,例如 (加入。LEFT_OUTER需要包含零赞的帖子,仅供参考(:

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))

最新更新