我应用程序中的人每种产品都只有一个折扣的记录。我对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将更新其他将创建新记录