Как использовать метод PUT для создания объекта в Django - PullRequest
0 голосов
/ 19 марта 2020

Как использовать метод PUT для создания объекта по определенному идентификатору, если для этого идентификатора нет объекта в Django Rest Framework?

Ответы [ 2 ]

0 голосов
/ 19 марта 2020

RESTFUL API должен выдавать ошибку для запроса PUT на объект, который не существует. Идея заключалась в том, что если он существовал в какой-то момент для создания идентификатора, он был с тех пор удален Разумнее сохранить его, чем создавать заново.

Это особенно верно, если идентификатор генерируется автоматически. И даже более того, если это автоинкрементный целочисленный идентификатор, такой как идентификатор по умолчанию Django моделей. Если бы вы поддерживали эту функцию в этом случае, пользователь создал бы экземпляр данных с идентификатором, который таблица еще не увеличила за , что потенциально может привести к таким ошибкам.

0 голосов
/ 19 марта 2020

Вы можете попробовать update_or_create()

Например:

class YourAPIView(APIView):

    def put(self, request, **kwargs):
        serializer = YourSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        obj, created = YourModel.objects.update_or_create(
        id=kwargs['id'],
        defaults=serializer.validated_data)
        return Response()


...