【问题标题】:FOREIGN KEY constraint failed - DjangoFOREIGN KEY 约束失败 - Django
【发布时间】:2021-05-01 12:17:20
【问题描述】:

所以我正在尝试为我的 API 创建删除路由,但遇到了问题。每当我点击删除路线时,我都会收到一个错误django.db.utils.IntegrityError: FOREIGN KEY constraint failed。如果删除路线被击中,我正在尝试删除模型。我已经完成了makemigrations 和migrate,但没有任何变化。我的代码示例如下:

class RandomAPIView(APIView):
    def delete(self, request, id, format=None):
        product = Product.objects.get(pk=id)
        product.delete()
        return Response({'Success':'Product has been deleted'})

models.py 中的产品

class Product(models.Model):
    name = models.CharField(max_length=200)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True, null=True)

    def __str__(self):
        return self.name

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    您应该使用 django-rest-framework 的序列化程序和视图集来实现这一点。 (RTFM)

    
    ## serializers.py
    
    from rest_framework import serializers
    
    class ProductSerializer(serializers.ModelSerializer):
        class Meta:
            model = Product
            fields = "__all__"
    
    ## views.py
    from rest_framework import viewsets, mixins
    
    # below subclassing is done to only allow deletion, 
    # u can also use `viewsets.ModelViewSet` to allow all operations
    # such as `list`, `create`, etc.
    class ProductViewSet(viewsets.GenericAPIView, mixins.DestroyModelMixin):
        queryset = Product.objects.all()
        serializer_class = ProductSerializer
    
    

    Reference to DRF's docs.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 2022-10-17
      • 2019-11-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多