在Djang的自定义管理器中捕获DoesNotExist异常

2024-10-01 15:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django模型的定制经理。我好像没法在这里抓住无神论者的例外。我知道如何在模型中进行操作,但在这里不起作用:

class TaskManager(models.Manager):
    def task_depend_tree(self, *args, **kwargs):
        if "id" in kwargs:
            try:
                task = self.get(id=kwargs["id"])
            except DoesNotExist:
                raise Http404

Get_object_或_404也不起作用。 这里怎么了?


Tags: django模型selfidtreetaskmodelsdef
3条回答

正如panchicore建议的那样,self.model是一条路。

class TaskManager(models.Manager):
    def task_depend_tree(self, *args, **kwargs):
        if "id" in kwargs:
            try:
                task = self.get(id=kwargs["id"])
            except self.model.DoesNotExist:
                raise Http404

尝试使用ObjectDoesNotExist而不是DoesNotExist,或者可能使用self.DoesNotExist。如果其他方法都失败了,就试着捕捉一个香草Exception并对其进行评估,以查看它的类型()。

from django.core.exceptions import ObjectDoesNotExist

您可以使用Manager.model(self.model)实例中的DoesNotExist, 当您说objects = MyManager()时,您是在MyManager类中分配self.model。

        try:
            task = self.get(id=kwargs["id"])
            return task
        except self.DoesNotExist:
            return None

相关问题 更多 >

    热门问题