【问题标题】:Filter data based on current date + 365 days in Django Rest framework在 Django Rest 框架中根据当前日期 + 365 天过滤数据
【发布时间】:2020-01-18 01:04:04
【问题描述】:

我正在尝试构建一个网络应用程序。部分要求是当用户点击像“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)

这是我的 model.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'

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    将时间间隔转换为日期对象和当前日期和时间间隔,并查询所有日期大于或等于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

    【讨论】:

      【解决方案2】:

      您可以使用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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-12
        • 1970-01-01
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 2018-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多