私はPythonにまったく慣れていませんが、両方を見てきました
Entries.objects.raw("SELECT * FROM register_entries")
と
Entries.objects.filter()
同じクエリを実行します。
どちらの場合にどちらを使用するのが良いですか?
使用しているデータベース バックエンドによって異なります。1 つ目は、SQL ベースのデータベース エンジンを使用していることを前提としています。それは必ずしも真実ではありません。反対に、2 番目のものはどのような場合でも機能します (バックエンドがそのように設計されている場合)。たとえば、数年前にそのように設計された LDAP バックエンドがありましたが、LDAP クエリは SQL 言語をまったく使用しません。
いずれの場合も、 2 番目のものを使用することをお勧めします。再利用可能で長期的なコードを作成したい場合は、これがより良い方法です。
最初のものよりも2番目のものを好む他のアイデアもあります
ただし、特定の操作 (特定のバックエンドの関数を呼び出す) を行うときに最初のものを使用する必要がある場合がありますが、可能な限り避けてください。
一言で言えば、2番目のものを使用してください!!!
ジャンゴのドキュメントから:
モデル クエリ API が十分に機能しない場合は、生の SQL の記述にフォールバックできます
あらゆる面で、django queryset api は、クエリをカスタマイズするための多くのオプションを提供します。しかし場合によっては、django api が不十分になる非常に具体的なクエリを使用する必要があります。ただし、生の SQL を使用する前に、すべての Queryset Api ドキュメントを読み、django クエリセット API についてすべてを学ぶことをお勧めします。