Как использовать разные поля поиска в каждом запросе одного класса

#django #django-rest-framework #django-urls #django-rest-viewsets #django-viewsets

Вопрос:

Хотите получить доступ к другому запросу, используя разные поля поиска. Я использовал simplerouter в маршрутизаторе и ModelViewSet в представлениях платформы django rest.

Пример ожидаемого варианта использования:

url для выполнения обновления — /пользователь/{идентификатор}/

url для выполнения удаления- /пользователь/{creation_date}/

Пожалуйста, помогите решить эту проблему.

Спасибо.

Комментарии:

1. Это не так, как работает простой маршрутизатор, вам нужно будет настроить URL-адреса вручную. Кроме того, почему вы хотите использовать creation_date это действительно плохо — потому что это не уникально. Используйте идентификатор для удаления пользователя.

2. Спасибо за ваш комментарий. приведенный выше пример использования является лишь примером проблемы.

3. Я решил проблему, настроив simplerouter.

Ответ №1:

Вы можете создать свой собственный api-интерфейс и собирать поля, которые вы хотите использовать, чтобы делать все, что вы хотите. В этом случае не передавайте никаких ключей с URL-адресом. Передайте ключи с запрошенными данными.

Пример :

 class UserAPIView(APIView):    def post(self, request, *args, **kwargs):   email = request.data.get('email', None)  pk = request.data.get('pk', None)  # you can use the email or id or any field that you posted to do your work below like update delete etc.     # Return your response   return Response({'details': 'email and password is required'}, status=status.HTTP_204_NO_CONTENT)