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"})
谢谢您的帮助。