Без исключения:
if SomeModel.objects.filter(foo='bar').exists():
x = SomeModel.objects.get(foo='bar')
else:
x = None
Использование исключения:
try:
x = SomeModel.objects.get(foo='bar')
except SomeModel.DoesNotExist:
x = None
Есть небольшой спор о том, когда следует использовать исключение в python.С одной стороны, «проще просить прощения, чем разрешения».Хотя я согласен с этим, я считаю, что исключение должно остаться, ну, исключение, и «идеальный случай» должен выполняться, не затрагивая его.