これを行うためのより良い方法はありますか
us = User.objects.filter(id=someid)
if us.exists():
u = us[0]
SQLログに表示されているように、us.exists()はSQLクエリを実行し、次にu =us[0]は別のクエリを実行します。したがって、物事を成し遂げるために2つのクエリを実行する必要があります。私はこれを行うためのより良い方法を求めたいだけです
これを行うためのより良い方法はありますか
us = User.objects.filter(id=someid)
if us.exists():
u = us[0]
SQLログに表示されているように、us.exists()はSQLクエリを実行し、次にu =us[0]は別のクエリを実行します。したがって、物事を成し遂げるために2つのクエリを実行する必要があります。私はこれを行うためのより良い方法を求めたいだけです
ユニークであると仮定するid
と、おそらく許可ではなく許しを求める必要があります。
try:
u = User.objects.get(id=someid)
except User.DoesNotExist:
# do whatever you should do if user does not exist
.get()
djangoクエリセットのキャッシュを利用しません。したがって、クエリセットを本当に使用して再利用したい場合は、次のようにキャッチするのがより良い方法IndexError
です。
us = User.objects.filter(id=someid)
try:
u = us[0]
except IndexError:
#item does not exist.