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)
Some tips online for the django ORM specifically mentioned to not do something this as it uses too much memory and hurts performance, the docs recommend to stick with the ORM as much as possible.
I tried to solve the issue above with this:
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
},
)
But for something like this, i'm not quite sure on how to handle it.
Also a final question that is a bit related. If I have a queryset that needs to be ranked simply by the count of the ordering, whats the recommended way to do this without iteration?
Model1.objects.order_by('something').extra(select={'rank':
"how do i get the rank in mysql??? like while its
iterating, is this even possible"})
Thanks for the help.