Внешние объединения можно рассматривать как хак, потому что в SQL отсутствует «навигация».
То, что у вас есть, - простая ситуация с утверждением if.
for line in someRangeOfLines:
for col in someRangeOfCols:
try:
cell= FooVal.objects().get( col = col, line = line )
except FooVal.DoesNotExist:
cell= None
Вот что такое внешнее объединение - попытка поиска с заменой NULL.
Единственная оптимизация - что-то вроде следующего.
matrix = {}
for f in FooVal.objects().all():
matrix[(f.line,f.col)] = f
for line in someRangeOfLines:
for col in someRangeOfCols:
cell= matrix.get((line,col),None)