私はモデル "Post"を持つシンプルなブログアプリを持っています。djangoおそらく空のリストから0番目のアイテムを取得する方法
latest_post = Post.objects.order_by('-date_created')[0]
エラーです:はIndexError:リストインデックスIは、Postモデル内のすべてのエントリを削除した場合、私は私がこのようにやった日付順ポストリストで最初の項目を参照しようとすると、私はエラーを取得します修正として範囲
のうち、私は次のようにアイテムを取得:
all_posts = Post.objects.order_by('-date_created')
latest_post =()
if (all_posts):
latest_post = all_posts[0]
これは私のモデルにはアイテム「ポスト」は存在しない場合に動作し、例外がスローされません。 しかし私にとっては、これはあまりにも多くのコードのように、かなり簡単なことをするようです。私はdjango QuerySet APIを使ってこれを行うより良い方法があると仮定していますが、ドキュメントには何も見つかりません。
アイデア?
EDIT:Postモデルにアイテムが存在しない場合に奇妙な、これはエラーをスローしません:
latest_post_list = Post.objects.all().order_by('-date_created')[1:10]
+1は「try ... except」です。許可よりも許しを求める方が簡単です。 –
+1は、問題を解決するためのより良い方法として最新のものを提案しています。 –
'.latest()'はヌルエントリをフィルタリングせず、ヌルは最初に通常はソートします。したがって、日付がnullの場合は、Post.objects.exclude(date_created = None).latest( 'date_created') ' – rcoup