[英]Counts on joined tables using Peewee
我正在尝试使用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()
。
我在这里完全迷路了。 有人知道我该如何解决吗? 欢迎所有提示!
尝试使用以下语句,它应该可以满足您的需求。
User.select().where(fn.Exists(Message.select().where(Message.user == User.id)))
如果要按汇总过滤,则需要
a)添加一个有效的group_by()
子句
b)在having()
子句中进行过滤
像
User.select().group_by(User).having((fn.Count(User.messages) > 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.