我想基于查询参数start
和end
在时间戳字段上应用范围过滤器。
我的看法如下:
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”
这是什么问题?
答案 0 :(得分:1)
您缺少等号。应该是:
return HourlyTick.objects.filter(timestamp__range=(start, end))
您还需要将日期时间字符串转换为日期时间对象。