Помогите определиться со способом хранения такой матрицы в БД. Кроме того в качестве “координат” выступают записи другой таблицы. (т.е. данную матрицу так же можно воспринимать как граф).
Такой вариант:
class Main():
name = CharField()

class MatrixItem(Model):
value = FloatField()
x = ForeignKey(Main)
y = ForeignKey(Main)
Не слишком подходит по понятным причинам.

Вот этот вариант кажется оптимальным:
class Main():
name = CharField()

class MatrixItem(Model):
value = FloatField()
coor = ManyToManyField(Main, related_name = 'items') #Храниться две ссылки на Main
Но встаёт вопрос о том как извлекать элементы имея на руках две записи Main, самое лучшее что я смог придумать это:
def get_value(p1, p2):
try:
if p1<>p2:
return p1.items.__and__(p2.items)[0].value #Пользуясь случаем хотелось бы спросить, почему результат p1.items.__and__(p2.items) отличается от p1.items and p2.items ?
else:
return None
except IndexError:
return 0
Но если я правильно понимаю, то при такой реализации будет два запроса и будут вытаскиваться целые строки и ряды.
Так вот можно ли как-то улучшить или переделать эту схему?
Буду благодарен за любые полезные советы и указания.