model_one_list = Model1.objects.all()
model_two_list = Model2.objects.filter(...).order_by(..)
for model in model_one_list:
for model2 in model_two_list:
if model.field == model2.field:
another_list.append(model)
django ORM に関するオンラインのヒントでは、メモリを使いすぎてパフォーマンスが低下するため、これを行わないように特に言及されています。ドキュメントでは、可能な限り ORM を使用することをお勧めしています。
上記の問題をこれで解決しようとしました:
Model1.objects.extra(
where={
'field = app_model2.field'
# Not sure if this works, I think the app_model2 may be wrong idk if i
# can access that
},
)
しかし、このようなものについては、それを処理する方法がよくわかりません。
また、少し関連する最後の質問です。単純に順序付けの数でランク付けする必要があるクエリセットがある場合、反復せずにこれを行うための推奨される方法は何ですか?
Model1.objects.order_by('something').extra(select={'rank':
"how do i get the rank in mysql??? like while its
iterating, is this even possible"})
助けてくれてありがとう。