使用Django Rest Framework在Pre_Save中引发验证错误

时间:2014-07-13 20:28:00

标签: django django-rest-framework

使用Django Rest Framework时,我很难提出验证错误。

我有一个所有者字段。 owner字段需要访问请求对象。文档建议using the following approach

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

我的问题是如果此代码失败,如何引发验证错误。我尝试在pre_save方法中引发错误,但这不能正常工作。它实际上导致从Django返回的HTML响应,而不是来自Django Rest Framework的消息。

1 个答案:

答案 0 :(得分: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