使用 DestroyModelMixin 在 Django Rest Framework 中调用 api 端点时不允许删除方法

问题描述

我在 UpdateAPIView 中导入了 DestroyModelMixin,这样我就可以在同一个 API 端点中同时使用 PUT 和 DELETE 方法。它适用于 PUT 并且可以更新,但是当我在 postman调用 DELETE 时,它说 DELETE 是不允许的。

但是,当我只使用 DestroyAPIView 创建一个单独的视图时,它工作正常。我想要一个用于更新和删除的 API。

我的模型:

class CartItem(models.Model):
    cart = models.ForeignKey(Cart,on_delete=models.CASCADE,related_name='cartitems')
    item = models.ForeignKey(Product,on_delete=models.CASCADE)
    quantity = models.IntegerField()

    def __str__(self):
        return self.item.name

我的观点:

class CartItemUpdateAPIView(UpdateAPIView,mixins.DestroyModelMixin):
    permission_classes = [IsAuthenticated]
    queryset = CartItem.objects.all()
    serializer_class = CartItemSerializer

    def perform_update(self,serializer):
        serializer.save()

    def perform_destroy(self,instance):
        instance.delete()

我的序列化器:

class CartItemSerializer(serializers.ModelSerializer):


    class Meta:
        model = CartItem
        fields = ['id','cart','item','quantity']
        depth = 1

我的网址:

path('api/cartitemupdate/<int:pk>',views.CartItemUpdateAPIView.as_view(),name='api-cartitem-update'),

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)