2

让我们尝试使用用户和推文来解释我的问题。

这些是我的模型(来自 Peewee 文档):

class User(BaseModel):
    username = CharField()

class Tweet(BaseModel):
    user = ForeignKeyField(User, related_name='tweets')
    message = TextField()

这是我的查询:

User.select().annotate(Tweet).order_by(fn.Count(Tweet.id).desc())

我有一些用户还没有发推文,但无论如何我都希望通过我的查询来获取他们。不幸的是,此查询不适用于没有推文的用户。

我怎么解决这个问题?

4

1 回答 1

3

好的,我解决了。

如果您有我的问题,只需使用OUTER JOIN.

这是我的新查询:

User.select(User, fn.Count(Tweet.id).alias('count')) \
    .join(Tweet, JOIN_LEFT_OUTER).group_by(User)
于 2012-10-31T14:48:46.617 回答