1

これを行うためのより良い方法はありますか

us = User.objects.filter(id=someid)
if us.exists():
   u = us[0]

SQLログに表示されているように、us.exists()はSQLクエリを実行し、次にu =us[0]は別のクエリを実行します。したがって、物事を成し遂げるために2つのクエリを実行する必要があります。私はこれを行うためのより良い方法を求めたいだけです

4

2 に答える 2

6

ユニークであると仮定するidと、おそらく許可ではなく許しを求める必要があります。

try:
    u = User.objects.get(id=someid)
except User.DoesNotExist:
    # do whatever you should do if user does not exist
于 2012-11-04T13:26:03.860 に答える
4

.get()djangoクエリセットのキャッシュを利用しません。したがって、クエリセットを本当に使用して再利用したい場合は、次のようにキャッチするのがより良い方法IndexErrorです。

us = User.objects.filter(id=someid)
try:
   u = us[0]
except IndexError:
    #item does not exist.
于 2012-11-04T13:59:26.670 に答える