[解決済み] Django の filter と get は単一オブジェクトの場合?
2022-04-25 12:19:35
質問
このことについて同僚と議論していました。 Django でオブジェクトを取得する際、1つしか期待していない場合に好ましい方法はありますか?
明らかな方法は2つです。
try:
obj = MyModel.objects.get(id=1)
except MyModel.DoesNotExist:
# We have no object! Do something...
pass
そして
objs = MyModel.objects.filter(id=1)
if len(objs) == 1:
obj = objs[0]
else:
# We have no object! Do something...
pass
最初の方法は動作的にはより正しいと思われますが、制御フローに例外を使用するため、若干のオーバーヘッドが発生する可能性があります。 2番目の方法は、より遠回りですが、例外を発生させることはありません。
どちらが望ましいか、ご意見をお聞かせください。 どちらがより効率的でしょうか?
解決方法は?
get()
が用意されています。
このケースに特化した
. 使ってください。
オプション 2 は、ほぼ正確に
get()
メソッドは Django で実際に実装されているので、パフォーマンスの違いはないはずです (そして、それを考えているということは、プログラミングの基本的なルールの 1 つ、つまり、コードを書いてプロファイリングする前に最適化しようとすることに違反していることを示しています -- コードを持って実行するまで、それがどう動作するかわかりませんし、それ以前に最適化しようとするのは苦痛の道です)。
関連
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
[解決済み] Django の Model オブジェクトを、全てのフィールドをそのままに dict に変換します。
-
[解決済み] Django のクエリで OR フィルタを行うにはどうすればよいですか?
-
[解決済み] Django のクエリを値のリストでフィルタリングするにはどうすればよいですか?
-
[解決済み] Djangoでクエリオブジェクトを日付範囲でフィルタリングするにはどうすればよいですか?
-
[解決済み】Djangoでオブジェクトが存在する場合はそれを取得し、存在しない場合はNoneを取得するには?
-
[解決済み】Django: モデルフィールドのリストを取得しますか?
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み] djangoでクエリセットから最初のオブジェクトを取得する最速の方法は?
-
[解決済み] Django ManyToMany filter()
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
Django の ForeignKey パラメータの使用法
-
Django。"makemigrations "時に変更が検出されない。
-
ImproperlyConfiguredです。DEFAULT_INDEX_TABLESPACE の設定を要求されましたが、設定されていません。
-
[解決済み] Djangoでファイルをアップロードする方法は?[クローズド]。
-
[解決済み] request.GETでURLパラメータを取得する
-
[解決済み] djangoでクエリセットから最初のオブジェクトを取得する最速の方法は?
-
[解決済み] Django - 外部キーのプロパティでフィルタリングする
-
[解決済み] django のテンプレートで最初の文字を大文字にする
-
[解決済み] Djangoで異なる設定でUnitテストを行うには?