我正在尝试使用Peewee ORM编写查询。查询应返回至少有一条与之关联的消息的所有用户名。我目前尝试如下:
usersWithAtLeastOneMessage = User.select().where((fn.Count(User.messages) > 0)
for u in usersWithAtLeastOneMessage:
print u.name
我的模型看起来像这样:
class User(db.Model):
name = CharField()
class Message(db.Model):
user = ForeignKeyField(User, related_name='messages')
text = TextField()
然而,这给了我以下错误:OperationalError: misuse of aggregate function Count()
。
答案 0 :(得分:0)
尝试使用以下语句,该语句可以执行您要查找的内容。
User.select().where(fn.Exists(Message.select().where(Message.user == User.id)))
答案 1 :(得分:0)
如果您想按聚合进行过滤,则需要
a)添加有效的group_by()
子句
b)在having()
子句中进行过滤
喜欢
User.select().group_by(User).having((fn.Count(User.messages) > 0)