如果对象在Django中存在,如何获取该对象;如果对象在Django中不存在,如何获取该对象?

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

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

如何让gobeNone代替DoesNotExist

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

尝试:
go=SomeModel.objects.get(foo='bar')
除了SomeModel.DoesNotExist:
go=无

我所做的是将models.Manager子类化,创建一个类似于上面代码的safe\u get,并将该管理器用于我的模型。这样您就可以编写:SomeModel.objects.safe\u get(foo='bar')

发表评论