小编典典

如果对象存在,我如何获取它,或者如果它在 Django 中不存在,我如何获取它?

all

当我要求模型管理器获取一个对象时,它会DoesNotExist在没有匹配的对象时引发。

go = Content.objects.get(name="baby")

取而代之的是DoesNotExist,我怎么能go取而代之None


阅读 77

收藏
2022-04-11

共1个答案

小编典典

没有“内置”方法可以做到这一点。Django 每次都会引发 DoesNotExist 异常。在 python 中处理此问题的惯用方法是将其包装在 try
catch 中:

try:
    go = SomeModel.objects.get(foo='bar')
except SomeModel.DoesNotExist:
    go = None

我所做的是继承models.Manager,创建一个safe_get类似上面的代码并将该管理器用于我的模型。这样你就可以写:SomeModel.objects.safe_get(foo='bar').

2022-04-11