在Django Rest框架中根据当前日期+ 365天过滤数据

时间:2019-09-17 07:47:06

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

我正在尝试构建一个Web应用程序。要求的一部分是,当用户单击“ 1年”之类的时间间隔时,他可以在一年中观看所有即将上映的电影。

当用户单击“ 1年”时,它将触发一个过滤器,该过滤器显示从今天到明年的电影。 django怎么可能?

我想做一个与此逻辑类似的过滤器-

class sales_plot(APIView):
    def post(self, request, *args, **kwargs):
        interval = json.loads(request.body).get('interval')
        queryset = MovieList.objects.filter(date_of_relase= current_date + interval)
        serialize = serializer_name(queryset, many=True)
        return Response(serialize.data, status=status.HTTP_200_OK)

这是我的模型。py-

class MovieList(models.Model):
    Movie_id = models.CharField(max_length=250, blank=True, null=True)
    date_of_release = models.DateField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'movie_list'

我该怎么做?

2 个答案:

答案 0 :(得分:0)

将时间间隔转换为日期对象以及当前日期和时间间隔,并查询所有日期大于或等于interval + current date的对象

from django.utils import timezone
from dateutil.parser import parse

class sales_plot(APIView):
    def post(self, request, *args, **kwargs):
        interval = parse(request.data.get("interval") or '00:00:00')
        future_date = timezone.now() + interval
        queryset = model_name.objects.filter(date_of_relase__gte=future_date)
        serialize = serializer_name(queryset, many=True)
        return Response(serialize.data, status=status.HTTP_200_OK)

包装:https://dateutil.readthedocs.io/en/stable/parser.html

答案 1 :(得分:0)

您可以使用range

import datetime
interval = datetime.datetime.strptime('29-05-2019', "%d-%m-%Y").date()
# datetime.date(2019, 5, 29)
current_date = datetime.datetime.now().date()
# datetime.date(2019, 9, 17)

queryset = model_name.objects.filter(date_of_relase__range=(current_date ,interval))