Django rest framework 执行创建:在访问“serializer.data”后,不能调用“.save()”`
我使用以下代码重写CreateModelMixin:Django rest framework 执行创建:在访问“serializer.data”后,不能调用“.save()”`,django-rest-framework,Django Rest Framework,我使用以下代码重写CreateModelMixin: def create(self, request): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) with transaction.atomic(): self.perform_create(serializer) 在sel
def create(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
with transaction.atomic():
self.perform_create(serializer)
在self.perform_create(序列化程序)行中,我得到错误:
"You cannot call `.save()` after accessing `serializer.data`."
您是否也重写了
perform\u create()
函数?如果没有,您可以执行序列化程序.save()
。此外,您还可以使用@transaction.atomic()
装饰器来包围整个create()
函数,而不是为了尝试而在最后使用它。@Shinratensei在访问序列化程序后,我会遇到同样的错误“您无法调用.save()
”断言错误:您无法调用.save>()
在访问serializer.data
之后。如果在提交到数据库之前需要访问数据,请检查“serializer.validated\u data”。奇怪。您是否正在尝试创建对象的嵌套序列化?例如,一个对象具有另一个对象的外键,并且您也在尝试序列化另一个对象?什么视图当您收到错误时,Mixin是否适用于?