经过大量研究和大力帮助(感谢@bkawan),我写了很多方法在drf序列化中创建方法。我现在的挑战是使我的方法“更新”起作用。
PUT可以正常工作,但是当我排除产品字段时,PATCH无效。
有人有什么主意吗?我的serializer.py,视图和创建方法是here。
这是我的更新想法:
def update(self, instance, validated_data):
products = validated_data.pop('products', None)
if products is not None:
BundleProduct.objects.filter(bundle=instance.id).delete()
for product_id in products:
product = get_object_or_404(Product, pk=product_id)
BundleProduct.objects.create(product=product, bundle=instance)
return instance
答案 0 :(得分:0)
首先,为什么每次更新时都要删除并创建相同的记录。我不是你到底在做什么,但这不是强制性的,浪费时间。使用以下代码,它将同时适用于 if (getWindowProperty("mywindow", WND_PROP_VISIBLE) != -1)
destroyWindow("mywindow");
和
Update
种方法。
Patch
PUT -您需要在序列化器中发送所有期望的记录。
补丁-发送def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
return Response(serializer.data)
和必填字段进行更新。
为进一步参考,refer this