Звучит так, как будто вы используете конечную точку 'list', которая извлекает все объекты, соответствующие набору запросов, но вы хотите использовать конечную точку retrieve
детализации, где вы просто получаете один объект. Хорошая новость заключается в том, что, поскольку вы используете набор моделей, вы бесплатно получаете конечную точку retrieve
GET
. Все, что вам нужно сделать, это передать pk
объекта, который вы хотите, как часть URL-адреса, и он вернет только один запрошенный вами объект.
Так что, если ваш URL-адрес в настоящее время:
/api/v1/blood-donors
вы хотите использовать URL:
/api/v1/blood-donors/3
, чтобы получить только один нужный вам объект (с pk=3
). Конечная точка GET
без /{PK}
в конце всегда будет возвращать список, даже если в вашей базе данных есть только один объект, и если вы добавите pk
к URL, вы всегда получите только один объект назад , объект, который соответствует pk
, который вы передаете.
Обновление, чтобы ответить на ваш вопрос в комментарии. Новый метод будет выглядеть примерно так:
class bloodDonersView(viewsets.ModelViewSet):
queryset = bloodDonors.objects.all()
serializer_class = bloodDonorsSerializer
@action(detail=False, methods=['get',], url_path='first')
def get_first_object(self, request):
object = bloodDonors.objects.first()
serializer = bloodDonorsSerializer(object, many=False)
return response.Response(serializer.data)
URL-адрес, который вы будете использовать:
api/v1/blood-donors/first
, и вам нужно проверить документацию о том, куда импортировать ответ и декоратор действий.