Я хочу иметь возможность запрашивать несколько объектов БД по идентификатору в одном запросе DRF через параметр url с запросом GET. Я прочитал этот пост * * * * * * * * * * * документацию DRF по фильтрации по параметрам запроса и подумал, что понял, как реализовать, но мое решение немного не подходит. Он возвратит ответ, но не фильтрует набор запросов (ответ с несколькими идентификаторами {"detail":"Not found."}
)
views.py
@permission_classes((HasAPIAccess, HasUnrestrictedAPIAccess, ))
class EventListView(generics.ListAPIView):
serializer_class = EventSerializer
queryset = Event.objects.all()
def get_queryset(self):
ids = self.request.query_params.get('ids', None)
if ids is not None:
ids = [ int(x) for x in ids.split(',') ]
queryset = Event.objects.filter(pk__in=ids)
else:
queryset = Event.objects.all()[0:10]
return queryset
urls.py
router = DefaultRouter()
router.register(r'events', EventViewSet)
my_patterns = [
url(r'^events/list/$',
EventListView.as_view(),
name='events-by-id'),
url(r'^', include(router.urls)),
]
urlpatterns = [
url(r'^$', RedirectView.as_view(url='/v1/')),
url(r'^v1/$', schema_view),
url(r'^v1/', include(my_patterns)),
]`
цель состоит в том, чтобы сделать запрос GET наподобие curl -X GET --header 'Accept: application/json' --header 'Api-Key: {{ key }}' 'http://api.foo.com/v1/events/list/?ids=1,2,3,4,5'
, но в настоящее время он возвращает {"detail":"Not found."}
ответ
a curl -X GET --header 'Accept: application/json' --header 'Api-Key: {{ key }}' 'http://api.foo.com/v1/events/list/'
запрос без параметров возвращает нефильтрованный набор запросов