2014-07-13 52 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验证的显著量。