我正在尝试编写一个简单的查询,但使用 PSQL 函数 CURRENT_DATE 和 INTERVAL,例如:
users = await User.filter(created_at__gt="CURRENT_DATE - INTERVAL '30 DAYS'")
如何让它发挥作用?谢谢
我正在尝试编写一个简单的查询,但使用 PSQL 函数 CURRENT_DATE 和 INTERVAL,例如:
users = await User.filter(created_at__gt="CURRENT_DATE - INTERVAL '30 DAYS'")
如何让它发挥作用?谢谢
不幸的是,Tortoise ORM 以不同的方式处理不同的查询。例如:
update
查询,您可以只使用一个字符串值:await User.filter(id=user_id).update(updated_at="now()")
filter
您可以使用的查询pypika.functions
,pypika.terms
例如:from pypika.terms import Parameter, Interval
await User.filter(created_at__gte=Parameter("CURRENT_DATE") - Interval(days=30))
create
查询,这非常棘手。tortoise.fields.data.DateField
Tortoise ORM 不是为此而构建的,您需要做的是通过继承ortortoise.fields.data.DateTimeField
和覆盖to_db_value
方法来创建自己的字段类型类。长话短说,这是可能的,但非常棘手,特别是如果您想使用所有 3 种类型的查询:CREATE、UPDATE 和 SELECT。