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:
现在我如何使用我的序列化器进行级联?
您可以通过覆盖序列化程序上的 create
和 update
方法来覆盖 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
.
如何将参数传递给 DRF 中序列化程序的 save()
方法?
更具体地说,我需要将 cascade=True
标志传递给保存方法。
我将 DRF 与 MongoDB 一起使用,并且我有一个参考文档文档,我想在保存父文档时保存它。据我了解,Mongoengine 为此目的提供了级联标志。否则我会收到此错误:
ValidationError (Event:None) (You can only reference documents once they have been saved to the database:
现在我如何使用我的序列化器进行级联?
您可以通过覆盖序列化程序上的 create
和 update
方法来覆盖 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
.