需要运行下面的查询使用龟ORM。
SELECT date_trunc('hour',"created") "group_name",COUNT("id") "count" FROM "abc" WHERE "user_id"='xyz@gmail.com' AND "active"=true GROUP BY "group_name" ORDER BY group_name DESC;
尝试将内置函数date_trunc
用作以下查询中的group_by。
正在获取密钥错误“小时”。
ABC.filter(user_id=user_id, active=True) \
.annotate(count=Count("id"), group_name=DateTrunc("hour", "created")) \
.group_by('group_name').order_by('group_name').values_list('group_name', 'count').sql()
class ABC(AbstractBaseABC, ModelUtilMixin):
class Meta:
table = 'abc'
class AbstractBaseABC(Model):
serializable_keys = {'id', 'user_id', 'active', 'created', 'updated'}
id = fields.BigIntField(pk=True)
user_id = CITextField(index=True)
active = fields.BooleanField(default=True)
created = fields.DatetimeField(index=True)
updated = fields.DatetimeField()
class Meta:
abstract = True
class DateTrunc(Function):
database_func = CustomFunction("date_trunc", ["name", "text"])
1条答案
按热度按时间mzsu5hc01#
我没有使用过
Tortoise ORM
,但是看起来orm
认为函数参数是一个表列(或模型字段)。您可以尝试覆盖resolve(self, model: 'Type[Model]', table: Table)
方法: