django按日期查询数据
生活随笔
收集整理的這篇文章主要介紹了
django按日期查询数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、數據庫模型 。
from django.db import modelsclass Get_time(models.Model):'''測試'''name = models.CharField(max_length=12)time= models.DateTimeField(auto_now_add=True)2、序列化和分頁。?
from rest_framework import serializersfrom knife_manage import modelsclass Get_time_Serializer(serializers.ModelSerializer):'''序列化'''class Meta:model = models.Get_timefields = '__all__'class PageNumber(PageNumberPagination):'''分頁'''page_size = 50page_size_query_param = 'size'max_page_size = 5page_query_param = 'page'3、路由。
url(r'^/test/$', views.Timeview.as_view({'get':'filter','post':'post'})),?4、視圖。
class Timeview(ModelViewSet):authentication_classes = [] # 取消用戶認證queryset = models.Get_time.objects.all()serializer_class = Get_time_Serializer # 序列化數據pagination_class = PageNumber() # 分def filter(self, request, *args, **kwargs):"""多條件查詢匹配"""queryset = models.Get_time.objects.filter(time__year = 2020) # 按年查詢queryset = models.Get_time.objects.filter(time__month = 12) # 按月查詢queryset = models.Get_time.objects.filter(time__day= 9) # 按日查詢now = datetime.datetime.now()start = now-datetime.timedelta(hours=12, minutes=0, seconds=0)queryset = models.Get_time.objects.filter(time__gt= start) # 大于某個日期queryset = models.Get_time.objects.filter(time__lt= start) # 小于某個日期start_date = datetime.date(2009, 1, 1)end_date = datetime.date(2020, 3, 31)queryset = models.Get_time.objects.filter(time__range=(start_date, end_date)) # 按區間查詢queryset = models.Get_time.objects.filter(time__week_day=4) # 按星期幾查詢pager_size = self.pagination_class.paginate_queryset(queryset=queryset, request=request, view=self)ser = self.serializer_class(instance=pager_size, many=True)return self.pagination_class.get_paginated_response(ser.data)def post(self, request, *args, **kwargs):"""新增"""try:import randomname=random.randint(10000,99999)return Response({'info': '操作成功!', 'code': 200})except Exception:return Response({'info': '操作失敗!', 'code': 400})5、結果:
6、extra。
1)、用戶選擇日歷查詢。
range=['2019-03-04', '2019-06-24'] # 前臺傳過來的數據 start=[int(x) for x in range[0].split('-')] end=[int(x) for x in range[1].split('-')] start_date = datetime.date(start[0], start[1],start[2]) end_date = datetime.date(end[0],end[1],end[2])?2)、用戶選擇特定日期。
(2)、未設置時區時的操作 request_time='2012-09-09' time_split=[int(x) for x in request_time.split('-')] times='%s-%s-%s'%(time_split[0],time_split[1],time_split[2]+1) cday = datetime.strptime(times, '%Y-%m-%d') models.Get_time.objects.create(name=name,time=cday)(2)、設置時區時的操作 配置文件設置時區: TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_TZ = False視圖: request_time='2012-09-09' cday = datetime.strptime(request_time, '%Y-%m-%d') models.Get_time.objects.create(name=name,time=cday)?
總結
以上是生活随笔為你收集整理的django按日期查询数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 体育学校有没有计算机专业,职高有体育专业
- 下一篇: 如何更改计算机的用户信息,如何更改电脑的