6

Django 1.3を使用していて、モデルエントリで.exists()を使用しようとしていますが、以下のエラーが発生します。Exists()はDjango 1.2に含まれていたので、アクセスできるはずです。django.get_versionを使用してバージョンを確認しましたが、問題ありませんでした。pkに基づいてMyModelをクエリすると、エントリのみが返されますが、.exists()を使用してクエリを実行するとエラーがスローされます。何かをインポートする必要がありますか?

>>> m = MyModel.objects.get(pk=1)
>>> m
<MyModel: Model field entry 1>
>>> m = MyModel.objects.get(pk=1).exists()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'MyModel' object has no attribute 'exists'
4

3 に答える 3

16

exists() のメソッドですQuerySet

get()単一のモデルインスタンスを返し、そのインスタンスが存在しない場合は例外を発生さEntry.DoesNotExistせます。try/exceptしたがって、それを含むインスタンスが存在するかどうかわからない場合は、これをブロックでラップする必要がありますid

于 2012-06-19T01:09:03.473 に答える
0

私は自分のプロジェクトでDjango1.7を使用しており、コードは次のようになっています。

try:
    temp_query_set = YourModelName.functionName()
except ObjectDoesNotExists:
    <do something> 

これを使用する私のコードは(最初は)クエリセットが返されない場合は正常に機能しますが、何かが返される場合はif query_set.exists() エラーが発生することに注意してください 。object does not have attribute 'exists'だからplsはif <something>.exists() CMIIWの使用を避けてみてください

于 2015-04-28T07:11:31.903 に答える
0

次のように、.get()の代わりに.filter()を使用してみてください。

m = MyModel.objects.filter(pk=1).exists()
y = MyModel.objects.filter(pk=2).exists()
print(m)
print(y)

出力はboolである必要があります。例:

False
True

mが存在せず、yが存在すると仮定します

于 2022-02-23T00:38:26.883 に答える