Dango过滤器-过滤日期时间值

时间:2020-09-11 08:24:33

标签: django django-rest-framework django-filter

我有这样的 json日期时间

{
    "datetime": "2020-09-11 11:09:52",
}

我试图 过滤 像这样

本地主机:8000 / api / v1 / history?datetime = 2020-09-11%2011:09:52。

Here what i tried

class AuditlogFilter(filters.FilterSet):
    datetime = filters.DateTimeFilter(method="datetime_filter")

    class Meta:
        model = CRUDEvent
        fields = ['datetime']

    def datetime_filter(self, queryset, name, value):
        return queryset.filter(Q(datetime__icontains=value))

但是我得到了 空值 。我有办法存档吗?

预先感谢...

1 个答案:

答案 0 :(得分:0)

filters.py

class AuditlogFilter(filters.FilterSet):
    start_datetime = filters.DateTimeFilter(field_name='datetime',
                                            lookup_expr='gte')
    end_datetime = filters.DateTimeFilter(field_name='datetime',
                                          lookup_expr='lte')

    class Meta:
        model = CRUDEvent
        fields = ('start_datetime', 'end_datetime')

views.py

class CRUDEventView(viewsets.ReadOnlyModelViewSet):
    serializer_class = serializers.CRUDEventSerializer
    queryset = CRUDEvent.objects.all()
    filterset_class = AuditlogFilter

不知道为什么过滤器类与模型类不同