You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Django ORM查询time_open大于time_closed的Shop模型数据

解决方案

要实现直接通过Django ORM比较time_open和time_closed两个字段,筛选出time_open > time_closed的店铺,你需要使用Django的F表达式——它允许你在查询中直接引用模型的字段,实现数据库层面的字段间比较,完全符合你"不硬编码数据、直接比较字段"的要求。

具体实现步骤:

  1. 首先导入F表达式:
from django.db.models import F
  1. 构造查询集:
night_shops = Shop.objects.filter(time_open__gt=F('time_closed'))

原理说明:

  • F('time_closed')会告诉Django ORM去引用数据库中Shop表的time_closed字段,而非将其当作Python变量处理。
  • 最终生成的SQL会直接执行time_open > time_closed的字段比较逻辑,完美匹配你筛选夜班店铺的需求——示例中的shop_2会被包含在结果中,shop_1则会被排除。

内容的提问来源于stack exchange,提问作者oruchkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:01:09