如果对象存在,如何获得对象?如果不存在,如何获取对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

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

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

而不是DoesNotExist,我该怎么goNone呢?

提问于
用户回答回答于

没有“内置”的方式来做到这一点。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')

用户回答回答于

既然django 1.6可以使用first()方法,如下所示:

Content.objects.filter(name="baby").first()

扫码关注云+社区