Примите во внимание следующее:
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
в наборах запросов, но это не помогло.Как я не могу deffer внешний ключ при использовании only()
?