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

Django:如何按日期字段月份过滤Watch模型数据

解决Django模型筛选当前月份数据的问题

你之前的写法错误在于Django ORM不支持用.访问字段的子属性,必须使用双下划线__来指定字段的查找条件。另外只筛选月份会包含往年同期的数据,建议同时匹配年份,避免数据不准确。

正确实现代码

方式一:使用Python标准datetime模块

from datetime import datetime

now = datetime.now()
# 筛选当前年、当前月的Watch对象,按日期的日倒序排列
current_month_watches = Watch.objects.filter(
    date__year=now.year,
    date__month=now.month
).order_by('-date__day')

方式二:使用Django timezone(推荐,适配项目时区设置)

from django.utils import timezone

now = timezone.now()
current_month_watches = Watch.objects.filter(
    date__year=now.year,
    date__month=now.month
).order_by('-date__day')

补充说明

  • date__year和date__month是Django ORM的字段查找语法,用于匹配date字段对应的年份和月份
  • 加上年份筛选能确保只获取当前年份的当月数据,避免跨年份的同月数据被误查
  • 如果你的Watch模型确实有单独的day字段,order_by('-day')是有效的;如果只有date字段,需要用'-date__day'按日期的日部分倒序,或者直接用'-date'按完整日期倒序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:30:42