当我要求模型管理器获取一个对象时,它会DoesNotExist在没有匹配的对象时引发。
DoesNotExist
go = Content.objects.get(name="baby")
取而代之的是DoesNotExist,我怎么能go取而代之None?
go
None
没有“内置”方法可以做到这一点。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').
safe_get
SomeModel.objects.safe_get(foo='bar')