在Django Rest框架中更新PATCH时出错

时间:2019-02-27 20:38:20

标签: django django-rest-framework

经过大量研究和大力帮助(感谢@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

1 个答案:

答案 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