如何用Django ORM查询time_open大于time_closed的Shop模型数据
解决方案
要实现直接通过Django ORM比较time_open和time_closed两个字段,筛选出time_open > time_closed的店铺,你需要使用Django的F表达式——它允许你在查询中直接引用模型的字段,实现数据库层面的字段间比较,完全符合你"不硬编码数据、直接比较字段"的要求。
具体实现步骤:
- 首先导入F表达式:
from django.db.models import F
- 构造查询集:
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
相关产品推荐
相关产品推荐

