目前,我拉取的API是这样的:
http://127.0.0.1:8000/api/locs/data/2
并且输出如下:
{
"id": 2,
"date": "2019-01-07",
"hour": null,
"measurement": null,
"location": 6
}
我想要的实际上是通过location
值进行过滤,因此从上面的API URL中,我很乐意从location: 2
中提取所有数据。我该如何做到这一点?
到目前为止我有:
views.py
class LocationDataView(viewsets.ModelViewSet):
serializer_class = LocationDataSerializer
permission_classes = [IsAuthenticated]
authentication_classes = [TokenAuthentication]
def get_queryset(self):
queryset = LocationData.objects.all()
pk = self.kwargs['pk']
queryset = queryset.filter(location=pk)
def perform_create(self, serializer):
serializer.save()
和urls.py
from django.urls import path, include
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register(r'locs', views.LocationListView, 'locs')
router.register(r'locs/data', views.LocationDataView, 'locs/data')
urlpatterns = [
path('', include(router.urls)),
path('locs/forecast-data/',
views.getForecastData, name='forecast-data'),
]
我的问题是,我如何才能访问pk
的位置?
2条答案
按热度按时间esbemjvw1#
我认为你需要在
LocationDataView
中添加retrieve
函数。在urls.py
yshpjwxd2#
不确定你是否还需要答案,也不确定我的解决方案是否好,但我所做的是访问查询函数中的kwargs。
正如在另一个答案中所解释的,你需要一个
retrieve
或get
函数来使用请求。我正在使用Django Rest的泛型