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

如何使用Django-filter包按Date字段实现时间范围过滤

实现步骤

1. 自定义FilterSet过滤类

首先导入所需依赖,创建针对Metric模型的自定义过滤类,在类中定义时间范围对应的过滤字段:

from django_filters import FilterSet, DateFilter
from .models import Metric

class MetricFilterSet(FilterSet):
    # 定义起止日期过滤规则
    date_from = DateFilter(field_name='date', lookup_expr='gte', help_text='起始日期,格式YYYY-MM-DD')
    date_to = DateFilter(field_name='date', lookup_expr='lte', help_text='结束日期,格式YYYY-MM-DD')

    class Meta:
        model = Metric
        # 保留原有的过滤字段,新增时间过滤字段
        fields = ['country', 'channel', 'os', 'date_from', 'date_to']

2. 修改视图配置

将原来的filterset_fields配置替换为自定义的FilterSet类:

class MetricViewSet(viewsets.ModelViewSet):
    serializer_class = MetricSerializer
    queryset = Metric.objects.all()
    filter_backends = [DjangoFilterBackend]
    # 替换原来的filterset_fields配置
    filterset_class = MetricFilterSet

功能验证

配置完成后即可通过如下格式的请求筛选时间范围内的记录,原有国家、渠道、操作系统的过滤功能不受影响:

/metrics?date_from=2021-08-17&date_to=2021-08-19

如果需要使用示例中date-gte/date-lte的参数格式,修改FilterSet中字段的参数名、配合lookup_expr配置即可实现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:09:02