Django REST中get_object不存在怎么处理?

wwwo4jvm  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(145)

在我的Django视图中,我调用get_object方法来查询用户类型的记录。可能存在用户将不获得或为空的示例。我将这个方法调用给其他几个方法,如getpatch等。

from rest_framework.generics import GenericAPIView
from django.core.exceptions import ValidationError

class FooViewSet(GenericAPIView):
    def get_object(self, pk):
        try:
            foo = Foo.objects.get(pk=pk)
            return foo
        except Foo.objects.DoesNotExist:
            raise ValidationError('Foo Does Not Exist')
        
    def get(self, request, pk, format=None):
        obj = self.get_object(pk)
        return Response({})
    
    def patch(self, request, pk, format=None):
        obj = self.get_object(pk)
        return Response({})
    
    def delete(self, request, pk, format=None):
        obj = self.get_object(pk)
        return Response({})

我试图捕捉对象是否不存在并抛出ValidationError,但我得到了这个错误:

catching classes that do not inherit from BaseException is not allowed

如果不存在带有URL查询参数的对象(如此实现),如何正确抛出错误?

vktxenjb

vktxenjb1#

.objects是模型manager,而不是具有该异常的模型类
尝试:

except Foo.DoesNotExist:

相关问题