考虑以下:
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
不要被推迟,但它是!并且列表理解需要很长时间,因为每次迭代都会命中两次数据库。
我也在查询集中尝试过foreign_key1__id
,但没有帮助。如何在使用时不延迟外键only()
?