django - 如何在 F 表达式中使用 jsonfield?
问题描述
我在模型中有 jsonfield,我想运行这个查询:
Notification.objects.filter(Q(data__payload__request_visit_time__gte=(timezone.now() - timedelta(minutes=1) * ((1 + F("data__payload__visit_duration_plan")) * 15)).isoformat()))
但是 jsonfield 在 F 表达式中不起作用。
解决方案
我认为使用F
表达式是不可能的。作为一种解决方法,您可以首先使用注释添加一个动态字段,然后使用它应用条件。
from django.db.models.expressions import RawSQL
Notification.objects.annotate(
visit_duration = RawSQL("(data -> payload ->> visit_duration_plan)::int")
).filter(Q(
data__payload__request_visit_time__gte=(
timezone.now() - timedelta(minutes=1) * ((1 + F("visit_duration")) * 15)).isoformat()))
推荐阅读
- python - 如何在 django 框架中创建一个 html 文件?
- batch-file - 使用 cmd 进行复杂的复制图像
- python - 从 4D 列表中删除重复项
- python - 从带有参数的双击快捷方式运行 Python 文件
- ios - 带有 where(in:) 和 where(isEqual:) 的 Firestore 查询
- python - 无法调用/访问内部类方法 Python
- node.js - 未设置 Cookie,即使它位于响应标头中。使用快速会话 cookie
- excel - Excel Power Query 添加日期列失败
- c# - C# Unity Container Constructor Injection 瞬态生命周期管理器提供相同的实例
- c# - 如何在最后一个元素之前使用分隔符定义 WPF ContextMenu,使用 ItemsSource 上的绑定而不是单个 MenuItems