32

有没有办法在一次调用中完成以下操作:

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

我找到这样做的唯一方法是:

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

有没有办法在 django 的一次调用中做到这一点?

更新:除了在一个块中似乎没有其他方法可以做到这一点try/except但这里有一个更好的答案:

4

4 回答 4

59

这个怎么样:

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

现在如果没有 id=1 的对象存在 obj 将是 None

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

于 2016-08-19T22:50:33.870 回答
2

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

get_object_or_404(Mode, pk=1)
于 2012-06-03T02:29:21.143 回答
0

get_object_or_404

在你的模型中做。. .

@models.permalink
def get_absolute_url(self):
    return "/blog/%s/" self.slug
于 2012-06-03T08:44:17.787 回答
0

这个怎么样?

model_to_find = next(iter(Model.objects.filter(id=1)), None)
于 2022-02-18T14:01:20.430 回答