Я хотел бы использовать два атрибута модели для поиска записи Route
models.py
class Route(DateTimeModel):
start_poi = models.ForeignKey(Poi, related_name="start_pois", on_delete=models.CASCADE)
end_poi = models.ForeignKey(Poi, related_name="end_pois", on_delete=models.CASCADE)
...
def __str__(self):
return 'From %s to %s' % (self.start_poi.slug, self.end_poi.slug)
представлений.py
class RouteViewSet(viewsets.ViewSet):
http_method_names = ['get']
@staticmethod
def list(request):
queryset = ...
serializer = RouteSerializer(queryset, many=True)
return Response(serializer.data)
@staticmethod
def retrieve(request, from_poi_slug, to_poi_slug):
queryset = ...
route = get_object_or_404(queryset, from_poi_slug=from_poi_slug, to_poi_slug=to_poi_slug)
serializer = RouteSerializer(route)
return Response(serializer.data)
urls.py
urlpatterns.extend([
path(rf'{BASE_API_PATH}/routes/(?P<from_poi_slug>[-\w]+)/(?P<to_poi_slug>[-\w]+)', RouteViewSet),
])
Я получаю
Не найдено: / api / v1 /маршруты / xyz / abc [29 / апр / 2019 10:07:01] "GET / api / v1 / маршруты / моло-санта-мария / кеннеди-нэ HTTP / 1.1" 404 13191
Что мне не хватает?Как правильно переопределить #retrieve
и правильно настроить urls
?