美文网首页
django 时间筛选

django 时间筛选

作者: 叶叶阿姨 | 来源:发表于2020-01-09 15:51 被阅读0次

    两种方法:
    1.orm查询的方法

    def api_back_time_news(request):
       # 时间筛选
       if request.POST.get('time'):
          #从前端获取到时间拆分出开始时间和结束时间
           start_time = request.POST.get('time').split(',')[0]
           end_time = request.POST.get('time').split(',')[1]
           #时间查询
           post_list = Alerts.objects.filter(alerts_releasetime__gte=start_time,
                                             alerts_releasetime__lte=end_time).all()
           #查询后总数
           count = post_list.count()
           #拼数据返给前端
           data = []
           for a in post_list:
               data.append(dict(a.api_to_dict()))
           return JsonResponse({'msg': '获取成功', 'code': 200, 'data': data, 'count': count})
    
    

    2.sql查询方法

    def api_back_time_news(request):
        # 时间筛选
        if request.POST.get('time'):
            print(request.POST.get('time'))
            cursor = connection.cursor()
            start_time = request.POST.get('time').split(',')[0]
            end_time = request.POST.get('time').split(',')[1]
            page = int(request.POST.get('page', 1))
            limit = int(request.POST.get('limit', 10))
            cursor.execute(f'select * from quick_poll_alerts where alerts_releasetime >= "{start_time}" and alerts_releasetime <= "{end_time}"' \
                           f'order by alerts_releasetime desc limit {(page - 1) * limit},{limit}')
            data = [format_alerts_list(i) for i in cursor.fetchall()]
            cursor.execute(f'select count(*) from quick_poll_alerts where alerts_releasetime >= "{start_time}" and alerts_releasetime <= "{end_time}"' \
                f'order by alerts_releasetime desc limit {(page - 1) * limit},{limit}')
            count = cursor.fetchall()
            cursor.close()
            return JsonResponse({'msg': '添加成功', 'code': 200, 'data': data, 'count': count})
    

    这里的format_alerts_list是格式化sql输出

    def format_alerts_list(data, key=None, type=None, label=None):
        ret = {}
        # id
        ret['id'] = data[0]
        # img
        ret['img'] = data[3]
        # title
        ret['title'] = data[12]
        # abstract
        ret['abstract'] = data[2]
        # niche
        ret['niche'] = Niche.objects.filter(id=data[6]).first().niche_name
        # article
        ret['article'] = Article.objects.filter(id=data[4]).first().alerts_section_name
        # time
        ret['time'] = data[11].strftime("%Y-%m-%d")
        # source
        ret['source'] = Source.objects.filter(id=data[10]).first().source_name
        # regional
        ret['regional'] = Regional.objects.filter(id=data[7]).first().regional_name
        # content
        if type == 'detail':
            ret['content'] = data[1]
        if label:
            ret['label'] = data[13]
        return ret
    

    相关文章

      网友评论

          本文标题:django 时间筛选

          本文链接:https://www.haomeiwen.com/subject/wmhyactx.html