Model.objects.get()或None

时间:2012-06-03 01:03:08

标签: django django-models

有没有办法在一次通话中完成以下任务:

Model.objects.get(id=1) else None

我找到办法的唯一方法是:

try:
    object = Model...
except:
    object = None

有没有办法在django的单个调用中执行此操作?

更新:除了try/except块之外,似乎还没有办法做到这一点,但这里有一个更好的答案:In Django, how do I objects.get, but return None when nothing is found?

3 个答案:

答案 0 :(得分:21)

这个怎么样:

obj = Model.objects.filter(id=1).first()

现在如果没有id = 1的对象,则obj将为None

参考:https://docs.djangoproject.com/en/1.8/ref/models/querysets/#django.db.models.query.QuerySet.first

答案 1 :(得分:2)

如果您在Web请求中使用它,并且如果该对象不存在则您想返回404,那么您应该使用

get_object_or_404(Mode, pk=1)

答案 2 :(得分:0)

get_object_or_404

在你的模型中。 。

@models.permalink
def get_absolute_url(self):
    return "/blog/%s/" self.slug