Метод PUT также размещает данные в DRF

Я создаю простое приложение для блога и использую Django-Rest-Framework для APIs, Все работает нормально, но когда, Post работает нормально.

Я использовал API URL, например http://127.0.0.1:8000/api/blogs/ для получения результатов и публикации результатов, затем я начал работать над методом PUT. Когда я вставляю URL с ID, например http://127.0.0.1:8000/api/blog/19/, он показывает

Разрешить: GET, PUT, PATCH, DELETE, HEAD, OPTIONS

.

поэтому я попытался сделать PUT запрос через него, но он не редактировал данные, он размещал данные, то есть создавал новые данные.

Потом я прочитал несколько руководств и created a new UpdateView (genericView) затем определил все функции для него. Но потом он снова публикует данные НЕ редактирует данные.

models.py

class Blog(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=1000, default='')
    description = models.CharField(max_length=1000, default='')

class Image(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='images')
    image_text = models.CharField(max_length=1000, default='')

views.py

class BlogView(viewsets.ModelViewSet):
    serializer_class = BlogSerializer
    queryset = Blog.objects.all()

class BlogUpdateView(generics.UpdateAPIView):
    queryset = Blog.objects.all()
    serializer_class = BlogSerializer

    def update(self, request, *args, **kwargs):
        instance = self.get_object()
        instance.title = request.data.get("title")
        instance.description = request.data.get("description")
        instance.save()

        serializer = BlogSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        return Response(serializer.data)

serializers.py

class BlogSerializer(serializers.ModelSerializer):
    images = ImageSerializer(many=True)

    class Meta:
        model = Blog
        fields = ("id", "title", "description", "images")

    def create(self, validated_data):
        .......
        ..............

urls.py

    path('api/blogupdate/<int:pk>/', BlogUpdateView.as_view(), name="blogupdate")

Я пробовал много раз, но он все еще публикует данные, а не редактирует. Я не могу использовать форму для работы с данными, потому что я использую nested response.

Любая помощь будет очень признательна.

Вернуться на верх