DRF更新或创建对象



我应用程序中的人每种产品都只有一个折扣的记录。我对DB中的创建新记录有此视图。如何确定在DB中使用comming产品ID的对象是否可以更新目标列,否则创建新对象?有些人在序列化器中使用def创建器,我应该使用该功能还是其他功能?

class DiscountControllAPiView(APIView):
    """
        each product may takes a discount code or percent from owner or site administrator
    """
    def post(self,request):
        serializer = ProductDiscountControllSerializer(data=request.data)
        if(serializer.is_valid()):
            serializer.save()
            return Response(True)
        else:
            return Response(serializer.errors)

相关的串行器:

class ProductDiscountControllSerializer(ModelSerializer):
    class Meta:
        model = ProductDiscountControll
        fields = [
            'product',
            'discount',
            'discount_code',
            'discount_code_precent',
        ]

尝试此

class DiscountControllAPiView(APIView):
    """
        each product may takes a discount code or percent from owner or site administrator
    """
    def post(self,request):
        id = request.data.get('id', None):
        if not id:
            # perform creation
            serializer = ProductDiscountControllSerializer(data=request.data)
        else:
            # perform updation
            product_discount_controll = ProductDiscountControll.objects.get(id=int(id))
            serializer = ProductDiscountControllSerializer(product_discount_controll, data=request.data)
        if(serializer.is_valid()):
            serializer.save()
            return Response(True)
        else:
            return Response(serializer.errors)

如果请求中存在id,API将更新其他将创建新记录

相关内容

最新更新