繁体   English   中英

使用Peewee依靠联接表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM