次の点を考慮してください。
objs1 = MyModel.objects.filter(field1='1').only('foreign_key1','field2')
objs2 = MyModel.objects.filter(field1='2').only('foreign_key1','field2')
for o1 in objs1:
matches = [o2 for o2 in objs2 if o1.foreign_key1==o2.foreign_key1]
print len(matches)
only()
他のすべてのフィールドを延期します。しかし、AFAICT、私はforeign_key1
延期しないように要求しましたが、そうです! また、反復ごとに db が 2 回ヒットするため、リストの理解には非常に長い時間がかかります。
クエリセットも試しforeign_key1__id
ましたが、役に立ちませんでした。まだ使用している間に外部キーを延期しないようにするにはどうすればよいonly()
ですか?