32

1回の呼び出しで次のことを実行する方法はありますか?

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

これを行う方法を見つけた唯一の方法は、次のことを行うことです。

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

djangoで1回の呼び出しでこれを行う方法はありますか?

更新try/except:ブロック内以外でこれを行う方法はないようですが、より良い答えがあります: Djangoでは、objects.getを実行しますが、何も見つからない場合はNoneを返しますか?

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 に答える