2016-05-15 73 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"]})