【问题标题】:django FilterSet for end of daydjango FilterSet 结束一天
【发布时间】:2018-05-25 09:09:25
【问题描述】:

如何使查询从 FilterSet 的开始日期和结束日期开始获取正确的日期。 现在,如果您输入 start_filter_date = 2018.05.23 和 end_filter_date = 2018.05.25。然后 start_filter_date=2018.05.23T00:00 和 end_filter_date=2018.05.25T00:00。时间是 00:00,但必须是 23:59?

我的班级如下:

class TaskFilterSet(django_filters.rest_framework.FilterSet):
    id = django_filters.NumberFilter(name="pk")
    start_filter_date = django_filters.DateFilter(name="date_added", lookup_expr="gte")
    end_filter_date = django_filters.DateFilter(name="date_added", lookup_expr="lte")

【问题讨论】:

  • 我认为最好的方法是使用 gtelt 但发送结束日期 + timedelta(1)
  • @BearBrown 是的,但如果前端不能这样做。如何在后端更改正确的日期?
  • @BearBrown 我正在使用泛型进行查看。

标签: django datefilter


【解决方案1】:

我认为最好的方法是使用 gtelt 但发送结束日期 date_added + timedelta(1),我不使用 django 过滤器但基于 tips.html#solution-1-magic-values 你可以尝试:

class EndFilter(django_filters.DateFilter):

    def filter(self, qs, value):
        if value:
            value = value + timdelta(1)
        return super(EndFilter, self).filter(qs, value)


class TaskFilterSet(django_filters.rest_framework.FilterSet):

    id = django_filters.NumberFilter(name="pk")
    start_filter_date = django_filters.DateFilter(name="date_added", lookup_expr="gte")
    end_filter_date = EndFilter(name="date_added", lookup_expr="lt")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 2012-10-30
    • 2012-02-27
    • 2018-04-29
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多