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

Django Rest Framework: How to pass parameters to save method for cascading

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

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

ValidationError (Event:None) (You can only reference documents once they have been saved to the database:

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

您可以通过覆盖序列化程序上的 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.