web-dev-qa-db-ja.com

djangoを使用してpostgresqlデータベースに何かが存在するかどうかを確認するにはどうすればよいですか?

データベースの行に既に特定の入力が含まれているかどうかを確認したいと思います。すでに存在する場合は、再度追加されないようにします。存在しない場合は、通常どおり追加します。

確認するためにデータベースからすべてのコンテンツを引き出すことなく、何かが存在するかどうかをデータベースに要求するにはどうすればよいですか?

23
user1184321

使用できます

Entry.objects.filter(name='name', title='title').exists()

これにより、true/falseの値が返されます。 countを使用すると、ormはクエリを生成し、existsメソッドよりもはるかに長く実行されます。オブジェクトが存在しない場合、getメソッドは例外を発生させます。

request.POSTはディクショナリなので、使用するデータベースでdbをチェックします。

Entry.objects.filter(name=request.POST['name'], title=request.POST['title']).exists()
54
szaman

あなたの質問への答えは「はい」です。ただし、データベースのクエリに代わる方法も検討する必要があると思います。重複を残したくない一連のフィールドに一意のキーを作成します。

今、あなたの質問に答えます。 Djangoクエリに関するドキュメントを確認してください:

https://docs.djangoproject.com/en/dev/topics/db/queries/

つまり、Thingのデータモデルがある場合、Thing.objectsはクエリにアクセスするためのインターフェイスです。ドキュメントから(例として文字列フィールド「headline」を持つブログエントリを使用):

Entry.objects.get(headline__exact="Man bites dog")

インターフェースのすべての機能は、データベースに期待されるものです(完全一致以外のデータとの豊富な比較セットがあります)。特定の問題については、ドキュメントをさらに調べることをお勧めします。

2
ccoakley