Django Rest Framework:如何传递参数以保存级联方法

时间:2015-01-08 23:43:14

标签: django django-rest-framework mongoengine

如何将参数传递给DRF中序列化器上的save()方法?

更具体地说,我需要将cascade=True标志传递给save方法。 我正在使用DRF与MongoDB,我有一个参考文档文档,我想保存父文档时保存。根据我的理解,Mongoengine为此提供了级联标志。否则我收到此错误:

  

ValidationError(事件:无)(您只能引用一次文档   它们已保存到数据库中:

现在如何让我的序列化器使用级联?

1 个答案:

答案 0 :(得分:0)

您可以通过覆盖序列化程序上的createupdate方法来覆盖how Django REST Framework saves objects

class MyMongoSerializer(serializers.ModelSerializer):

    def update(self, instance, validated_data):
        from rest_framework.serializers import raise_errors_on_nested_writes

        raise_errors_on_nested_writes('update', self, validated_data)

        for attr, value in validated_data.items():
            setattr(instance, attr, value)

        # Override how the save happens
        instance.save(cascade=True)

        return instance

由于序列化程序上的create方法,您可能也遇到了问题。它不使用obj.save,而是使用Model.objects.create