2014-07-13 80 views
2

我在使用Django Rest框架引發驗證錯誤時遇到困難。在使用Django Rest框架的Pre_Save中引發驗證錯誤

我有一個所有者字段。所有者字段需要訪問請求對象。文檔建議using the following approach

def pre_save(self, obj): 
    obj.owner = self.request.user 

我的問題是如果此代碼失敗如何引發驗證錯誤。我試着在pre_save方法中引發一個錯誤,但這不能正常工作。它實際上會導致從Django返回的HTML響應,而不是來自Django Rest Framework的消息。

回答

3

使用django rest framework exceptions。例如:

from rest_framework.exceptions import ParseError 

... 

parsed_data = self.parse(some_data) 
if not parsed_data: 
    raise ParseError('Some error occurred') 

另外請注意,你不會看到在那裏一個404,這是因爲它採用了django.http.Http404例外。這些由API以良好的方式返回。

注:

如果你正在做的,你可能想看看placing your logic in the serializer驗證的顯著量。