django rest中的日期时间过滤器

django rest中的日期时间过滤器,django,django-rest-framework,Django,Django Rest Framework,我正在创建一个api,该api返回给定n天内特定城市的天气数据。(api定义:weatherdata/city_name/ndays/)。我无法为ndays整理数据 我用简单的图标把城市名称分类。同样地,我想为星期四做些安排。需要显示以前的星期日数据。示例:假设今天是2019-08-29,提供的星期日为6,则必须提供2019-08-24至2019-08-26期间特定城市的天气数据 views.py 类天气详情(APIView): def get_对象(自身、城市名称、星期日): 尝试: x=we

我正在创建一个api,该api返回给定n天内特定城市的天气数据。(api定义:weatherdata/city_name/ndays/)。我无法为ndays整理数据

我用简单的图标把城市名称分类。同样地,我想为星期四做些安排。需要显示以前的星期日数据。示例:假设今天是2019-08-29,提供的星期日为6,则必须提供2019-08-24至2019-08-26期间特定城市的天气数据

views.py
类天气详情(APIView):
def get_对象(自身、城市名称、星期日):
尝试:
x=weatherdata.objects.filter(城市名称\uuuiContains=城市名称)
now=datetime.datetime.now()
fromdate=now-timedelta(天=ndays)
y=
返回x
除Snippet.DoesNotExist外:
提高Http404
def get(自身、*args、**kwargs):
城市名称=kwargs[“城市名称”]
snippet=self.get\u对象(城市名称,星期日)
serializer=weatherdataserializer(snippet,many=True)
返回响应(serializer.data)

models.py
类天气数据(模型.模型):
城市名称=models.CharField(最大长度=80)
city\u id=models.IntegerField(默认值=0)
latitude=models.FloatField(null=True,blank=True)
经度=models.FloatField(null=True,blank=True)
dt_txt=models.DateTimeField()
temp=models.FloatField(null=False)
temp_min=models.FloatField(null=False)
temp_max=models.FloatField(null=False)
压力=型号。浮动字段(空=假)
海平面=models.FloatField(null=False)
grnd_level=models.FloatField(null=False)
湿度=型号。浮动字段(空=假)
main=models.CharField(最大长度=200)
description=models.CharField(最大长度=30)
clouds=models.IntegerField(null=False)
风速=models.FloatField(null=False)
风度=模型。浮动字段(空=假)
url.py
URL模式=[
路径('admin/',admin.site.url),
路径('weatherdata/',views.weatherList.as_view()),
路径('weatherdata//',views.weatherDetail.as_view()),
]

我希望“y”根据日期筛选对象。必须返回以前的星期日数据。get_对象应返回x和y下的对象,这些对象在我的代码中需要修改。

您必须像下面这样更改查询

class weatherDetail(APIView):
    def get_queryset(self, city_name, ndays):
        x = weatherdata.objects.filter(city_name__icontains=city_name)
        today_date = timezone.now().date()
        fromdate =  today_date - timedelta(days=ndays)
        x = x.filter(dt_txt__gte=fromdate).order_by('dt_txt')
        return x

    def get(self,*args,**kwargs):
        city_name = kwargs['city_name']
        snippet = self.get_queryset(city_name, ndays)
        serializer = weatherdataserializer(snippet, many=True)
        return Response(serializer.data)

@GiannisKatsini使用..filter(dt_txt_range=[“2011-01-01”,“2011-01-31”])对日期进行排序?它返回该日期范围内的对象,如果要排序,请使用
order_by='dt_txt')