django プロジェクトで作業し、呼び出しを高速化しようとしています。Django は自動的に 2 番目のクエリを実行して、外部キーの関係を評価していることに気付きました。たとえば、私のモデルが次のように見える場合:
Model Person:
name = model.CharField("blah")
Model Address:
person = model.ForeignKey(Person)
それから私は作る:
p1 = Person("Bob")
address1 = Address(p1)
print (p1.id) #let it be 1 cause it is the first entry
それから私が電話したとき:
address1.objects.filter(person_id = "1")
私は得る:
クエリ #1: SELECT address
。id
、address.person_id
からaddress
クエリ #2: SELECT person
。id
、person.name
からperson
2 番目の呼び出し、クエリ #2 を取り除きたい。django ドキュメントの「defer」を使用してみましたが、うまくいきませんでした (実際には、さらに多くの呼び出しが行われます)。「値」は可能性ですが、実際には、プルしたいフィールドがもっとたくさんあります。私がやりたいことは、FOREIGN KEYを評価しないことだけです。person_id を返してもらえれば幸いです。Django がすべての外部キーを評価するため、Address.objects.all() のようなコマンドを実行すると、特に実行時間が大幅に短縮されます。