断言错误:不能对包含无效数据的序列化程序调用".save()"


def update(self, request, pk=None):
queryset = Product.objects.all()
product = get_object_or_404(queryset, pk=pk)
serializer = ProductSerializer(product, data=request.data, context={"request": request})
serializer.is_valid()
serializer.save()
# print(request.data["product_details"])
for type_detail in request.data["product_details"]:
if type_detail["id"] == 0:
# For Insert New product_type Details
del type_detail["id"]
type_detail["product_id"] = serializer.data["id"]
serializer2 = ProductDetailsSerializer(data=type_detail, context={"request": request})
serializer2.is_valid()
serializer2.save()
else:
# For Update product_type Details
queryset2 = ProductDetails.objects.all()
type_product = get_object_or_404(queryset2, pk=type_detail["id"])
del type_detail["id"]
serializer3 = ProductDetailsSerializer(type_product, data=type_detail, context={"request": request})
serializer3.is_valid()
serializer3.save()
print("UPDATE")
return Response({"error": False, "message": "Data Has Been Updated"})

嗨,伙计们,我在我的视图集Django中遇到了这个错误,你们能帮我解决吗。。每当我想更新日期时,这就是错误,我会得到

它清楚地表明您的序列化程序数据验证失败。也就是说,

serializer.is_valid()

返回false。即使在那之后,您也要保存导致此错误的序列化程序对象。

理想情况下应该是这样的:

if serializer.is_valid()
serializer.save()

或者更干净的版本引发异常:

if serializer.is_valid(raise_exception=True):
serializer.save()

您需要检查此序列化程序对象无效的原因。如果serializer.is_valid()返回True,则保存数据。

最新更新