【发布时间】:2017-10-03 05:50:55
【问题描述】:
我在 Django 中工作,我有一种情况,我编写了一个自定义验证器,它存在于 model.py 中
当输入错误时,这个验证器应该返回一个validationError。
在我正在进行的项目中,我们将 Django Rest Framework 用于我们的 API,将 Django 管理面板用于我们的管理面板。它们连接到同一个数据库
我的问题是,当请求来自 API 时,我需要返回“serializers.ValidationError”(其中包含状态码 400),但是当请求来自管理面板时,我想返回“django” .core.exceptions.ValidationError' 在管理面板上工作。 exceptions.ValidationError 无法在 API 中正确显示,并且 serializers.ValidationError 会导致管理面板中断。有什么方法可以将适当的 ValidationError 发送到适当的地方吗?
这是我的验证函数(它存在于模型中)
def validate_unique(self, *args, **kwargs):
super(OrganizationBase, self).validate_unique(*args, **kwargs)
qs = self.__class__._default_manager.filter(organization_type="MEMBER")
if not self._state.adding and self.pk is not None:
qs = qs.exclude(pk=self.pk)
if qs.exists():
raise serializers.ValidationError("Only one organization with \'Organization Type\' of \'Member\' is allowed.") #api
raise exceptions.ValidationError("Only one organization with \'Organization Type\' of \'Member\' is allowed.") #admin
最后两行是为了说明而写在一起的两个错误,在这种情况下只有#api会运行
基本上我想在请求来自管理面板时发送errorA,当请求来自API时发送errorB
谢谢
【问题讨论】:
-
我不明白 API 和 Django 的管理员是如何关联的。此外,“API 中的 exceptions.ValidationError 没有正确显示”太含糊而无济于事。
-
它们没有链接,它们只是使用相同的数据库。基本上我想在请求来自管理面板时发送errorA,当请求来自API时发送errorB
标签: python django django-admin django-rest-framework