【发布时间】:2015-09-04 15:26:07
【问题描述】:
假设我有一个视图,我需要在调用 serializer.save 之前检查是否提供了一个字段,以确保我没有收到字典键错误:
class BarView(CreateAPIView):
serializer_class = BarSerializer
queryset = Bar.objects.all()
def perform_create(self, serializer):
if 'foo' not in self.request.data:
raise ParseError('foo field required.')
foo = get_object_or_404(Foo, pk=self.request.data['foo'])
if foo.counter == 10:
raise ParseError('foo limit reached.')
return serializer.save(user=self.request.user, foo=foo)
我不想返回"foo field required.",而是想返回一条与 Django REST 返回的消息相同的消息,例如{"foo":["This field is required."]}
有没有更好的方法来做到这一点?或许用序列化器单独验证 foo 字段?
更新:我忘了说用户字段也是必需的。
Bar 的模型是:
class Bar(models.Model):
user = models.ForeignKey(User, db_index=True, editable=False)
foo = models.ForeignKey(Foo, db_index=True)
【问题讨论】:
-
您的
serializer是否返回is_valid()值True? -
foo字段是您模型的一部分吗? -
是的,我刚刚将模型添加到原始问题中。
标签: python django django-rest-framework