2017-03-20 1 views
1

フィルタの違いは何であり、あなたがして、検索するより多くの属性を追加することができたり、あなたを満たすオブジェクトのリストを取得することができ、「フィルタ」ではGET対ジャンゴクエリセットとフィルタ()()

>>> Question.objects.filter(id=1) 
    <QuerySet [<Question: What's new?>]> 
    >>> Question.objects.get(pk=1) 
    <Question: What's new?> 
+0

ドキュメントで説明されているように、QuerySetはインスタンスの集合です。あなたを混乱させているのは何ですか? –

答えて

-2

を取得DBへの問い合わせ。

+1

これは間違っています。フィルタを適用してgetを実行すると、同じキーワードを使用して結果を絞り込むことができます。フィルタistは0..nだけで、getはちょうど1つの結果です。 – sphere

2

違いは、filterはクエリーセットオブジェクトを返し、wheras getは必要なオブジェクトを返します。

filter()を使用する場合は、条件に一致するオブジェクトが2つ以上あると予想される場合は、通常、これを実行します。条件に一致する項目が見つからなかった場合、filter()はエラーをスローせずに空のクエリーセットを返します。

get()を使用する場合は、条件に一致する項目が1つ(唯一)必要です。アイテムが存在しない場合、または条件に一致するアイテムが複数存在する場合、Getはエラーをスローします。したがって、例外を適切に処理するには、try .. except ..ブロックまたはget_object_or_404などのショートカット関数を使用する必要があります。

関連する問題