2016-05-15 72 views
0

我有一些验证在序列化程序数据保存之前根据序列化程序数据执行,并在验证失败时停止保存。我正在使用在执行perform_create方法之前执行的pre_save,并且我可以执行验证,但是我不知道如何在这些验证失败的情况下停止serializer.save()。Django停止序列化程序保存在CreateAPIView覆盖pre_save

我可以根据要求提供任何其他细节。我想坚持使用CreateApiView,除非它是完全不可避免的。

+0

您正在使用哪个版本的DRF? DRF 3.x不再使用'pre_save()'函数http://www.django-rest-framework.org/api-guide/generic-views/ – djq

回答

0

你应该能够调用serializer.is_valid(raise_exception=True)这将引发一个异常,从执行任何进一步的停止代码,如果没有在串行错误

如果您使用的是pre_save()功能,你可以随时增加解析错误例外,在满足条件时触发:

from rest_framework import exceptions 
raise exceptions.ParseError({"error":["Something went wrong"]})