Django过滤器时间戳__range

时间:2019-03-03 22:59:28

标签: python django

我想基于查询参数startend在时间戳字段上应用范围过滤器。
我的看法如下:

from rest_framework.generics import ListAPIView
from rest_framework.generics import RetrieveAPIView
from .models import HourlyTick
from .serializer import HourlyTickSerializer

# Create your views here.

class HourlyTickList(ListAPIView):
    def get(self, request):
        start = request.GET.get('start', None)
        end = request.GET.get('end', None)
        return HourlyTick.objects.filter(timestamp__range(start, end))

class HourlyTickDetail(RetrieveAPIView):
    queryset = HourlyTick.objects.all()
    serializer_class = HourlyTickSerializer

型号:

from django.db import models

# Create your models here.

class HourlyTick(models.Model):
    id = models.IntegerField(primary_key=True)
    timestamp = models.DateTimeField(blank=True, null=True)
    symbol = models.TextField(blank=True, null=True)
    open = models.IntegerField(blank=True, null=True)
    high = models.IntegerField(blank=True, null=True)
    low = models.IntegerField(blank=True, null=True)
    close = models.IntegerField(blank=True, null=True)
    trades = models.IntegerField(blank=True, null=True)
    volume = models.IntegerField(blank=True, null=True)
    vwap = models.FloatField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'xbtusd_hourly'

urls.py:

from django.urls import path, re_path

from . import views

urlpatterns = [
    re_path('hourlyticks', views.HourlyTickList.as_view())
]

我收到的错误是:

  

未定义名称“ timestamp__range”

这是什么问题?

1 个答案:

答案 0 :(得分:1)

您缺少等号。应该是:

return HourlyTick.objects.filter(timestamp__range=(start, end))

您还需要将日期时间字符串转换为日期时间对象。

相关问题