【发布时间】:2014-10-27 03:38:00
【问题描述】:
我有一个类似的问题,关于在序列化程序之外验证 Django REST 框架中的数据:
Raise Validation Error In Pre_Save Using Django Rest Framework
我的代码:
def pre_save(self, obj):
data = self.request.DATA['users']
for user in data:
if not user in allowed_users:
raise ParseError('An unpermitted user has been included')
从跟踪来看,它似乎正在尝试发送响应,但失败了:
"" 需要有一个字段值才能使用这种多对多关系。
更新:
我将 ParseError 提升到 get_serializer_class() 方法中,如下所示:
def get_serializer_class(self):
if 'users' in self.request.DATA:
# make sure the users are allowed
data = self.request.DATA['users']
for user in data:
if not user in allowed_users:
raise ParseError(detail='Unpermitted user')
return serializer
这会引发异常,但是,它不会使用 REST 框架的 JSON 响应返回它。相反,我得到了 django 堆栈跟踪和 500 错误,这不好。
谢谢!
【问题讨论】:
标签: django rest python-2.7 django-rest-framework